/* ALL LINES ARE 14.4 SUPRAFAXMODEMS (RINGDOWN) */
/* (513)-258-3815 NODE 4 - 2400 BAUD */
OPTIONS RESULTS
SIGNAL ON ERROR
SIGNAL ON SYNTAX
p='###PANIC'
MAXTIME=30 /* <-- CHANGE THIS TO MAXIMUM MINUTES PER TURN */
MAXTURN=3 /* <-- CHANGE THIS TO MAXIMUM TURNS PER DAY */
ERRORPATH='PFILES:LORDS/'
UPATH='PFILES:LORDS/USERS/STATS/'
BAKPATH='PFILES:LORDS/USERS/BACKPACKS/'
FPATH='PFILES:LORDS/USERS/FORTS/'
BPATH='PFILES:LORDS/USERS/SPELLBOOKS/'
NPATH='PFILES:LORDS/USERS/NEWS/'
SPATH='PFILES:LORDS/SCREENS/'
MPATH='PFILES:LORDS/MENUS/'
IPATH='PFILES:LORDS/ALLITEMS/ITEMS/'
WPATH='PFILES:LORDS/ALLITEMS/WEAPONS/'
APATH='PFILES:LORDS/ALLITEMS/ARMOR/'
MOUNPATH='PFILES:LORDS/ALLITEMS/MOUNT/'
EPATH='PFILES:LORDS/ENEMIES/'
SKPATH='PFILES:LORDS/SPELLS/'
MAPATH='PFILES:LORDS/MAPSTUFF/'
DROPATH='PFILES:LORDS/MAPSTUFF/MAPDROP/'
CODEPATH='PFILES:LORDS/MAPSTUFF/MAPCODE/'
DPATH='PFILES:LORDS/SCRIPT/'
MISPATH='PFILES:LORDS/SCRIPT/MISSIONS/'
QUESPATH='PFILES:LORDS/SCRIPT/QUESTS/'
NOTPATH='PFILES:LORDS/USERS/NOTEBOOKS/'
PLACEPATH='PFILES:LORDS/MAPSTUFF/MAPPLACES/'
CPATH='C:'
BBB=1
TT=TRANSMIT
SFI=SENDFILE
BRED=NO
SX=SENDSTRING
MAIN=YES
ATTMPT=1
DAM=' '
DAX=' '
DAY=' '
POSSY=NO
SPELLA=0
SPELLB=0
SPELLC=0
MNTMV=0
TUNNEL=NO
WALK=NO
RESTZ=0
DOOF=OKAY
CHANGEWHERE 'EARTH LORDS'
GETUSER 23
PORT=RESULT
GETUSER 12
CDATE=RESULT
PARSE VAR CDATE DAY" "DAYN"-"MONTH"-"YEAR" "TIME
NDAY=DAYN
GETUSER 1200032
XTIME=RESULT
UTIME=XTIME/10
TLIMIT=UTIME+MAXTIME
VERSE='.92'
IF EXISTS(UPATH||'WON') THEN DO;CALL OPEN(1,UPATH||'WON','R');WIND=READLN(1);CALL CLOSE(1);TT 'F1CF'WIND 'CAHAS WON THE GAME. IT WILL BE RESET DURING NIGHTLY MAINTENANCE.N1CONGRATULATECF' WIND 'CAON HIS/HER VICTORY!W3';EXIT;END
GETUSER 28
TERM=RESULT
IF TERM<2 THEN DO;TT 'N1C9OOPS!W2YOU NEED IBM GRAPHIX SET AT 16 COLORS TO PLAYCE EARTH LORDS!W2';EXIT;END
GETUSER 24
BAUD=RESULT
IF BAUD<241 THEN DO;TT 'N1C9I DIDN''T DO THIS TO MESS YOU UPN1BUT AT YOUR BAUD RATE THIS GAME WILL REALLY DRAG...SORRYW2';END
TT 'F1N9C6' CENTER("THAT WHICH DOESN'T KILL US WILL ONLY MAKE US STRONGER...",77)
TT ''
TT 'CE'CENTER(" ...FRIEDRICH WILHELM NIETZSCHE",77) 'W3'
SFI SPATH||'ELTITLE'
TT 'CFVERSION:C9' VERSE
TT 'N1G1'
BEGIN:
GETUSER 1
NAME=RESULT
IF EXISTS(UPATH||NAME)=1 THEN SIGNAL LOADSAVED
SFI DPATH||'WELCOME'
QUERY 'N1CBWHAT SHALL YOU NAME YOUR CHARACTER?N1CE>>>CF '
ST.1=RESULT
IF ST.1=p THEN EXIT
IF ST.1='' THEN SIGNAL BEGIN
SX 'N1CBAND WHAT SEX SHALL THIS CHARACTER BE? C9[M/F]CA '
GETCHAR
ST.167=UPPER(RESULT);TT ST.167
IF ST.167=p THEN SIGNAL EXIT
IF ST.167='F' THEN SIGNAL GOON
IF ST.167='M' THEN SIGNAL GOON
SIGNAL BEGIN
GOON:
EL='W'
IF EXISTS(UPATH||'LORDS')=1 THEN EL='A'
CALL OPEN(1,UPATH||'LORDS',EL)
CALL WRITELN(1,ST.1)
CALL WRITELN(1,NAME)
CALL CLOSE(1)
SIGNAL STARTROLL
STARTROLL:
DO I=1 TO 40
ITEM.I=' '
AMOUNT.I=' '
WEIGHT.I=' '
VALUE.I=' '
END
DO I=2 TO 69
ST.I=0
END
ST.50=OKAY
DO I=70 TO 106
ST.I=0
END
DO I=107 TO 129
ST.I=NONE
END
DO I=130 TO 150
ST.I=NO
END
DO I=151 TO 166
ST.I=0
END
ST.4=1
ST.169=1
DO I=60 TO 69
ST.I=X
END
ST.129=0
ST.97=NO
ST.98=NONE
ST.128=DEFAULTPIC
ST.168=1
ST.127=ON
ST.44=20
ST.45=20
ST.121=0
NUM=7
ST.157=' '
ST.158=' '
ST.163='W2'
ST.130=' '
ST.110=0
ST.112=0
ST.164=1
ST.119=200
ZIG=1
R1=VRND(8,18)
R2=VRND(8,18)
R3=VRND(8,18)
R4=VRND(8,18)
R5=VRND(8,18)
R6=VRND(8,18)
R7=VRND(8,18)
R8=VRND(8,18)
R9=VRND(8,18)
TT 'F1'
SIGNAL STARTCHAR
STARTCHAR:
SHOWN=NO
TT 'F0N1CAOKAY,CF' ST.1 'CA. THE FOLLOWING RANDOM ROLLS OF 8-18 MUST BE'
TT 'DIVIED UP AMONG YOUR STATISTICS. WE HAVE PROVIDED MORE RANDOM ROLLS'
TT 'THAN NECESSARY SO YOU WILL HAVE BETTER ODDS OF GETTING GOOD ROLLS.'
QUERY 'N1CAWHICH SPELL C9# CAWOULD YOU LIKE TO CAST?C9 [Q=QUIT]CF '
SPLN=UPPER(RESULT)
IF SPLN=p THEN SIGNAL QUIT
IF SPLN=' ' THEN SIGNAL SHUFFLE
IF SPLN='Q' THEN SIGNAL SHUFFLE
IF SPNAME.SPLN=' ' THEN DO;TT 'N1C9YOU HAVE NOT MEMORIZED THAT MANY SPELLSW2';SIGNAL SPELLSHOW;END
IF SPAMOUNT.SPLN=0 THEN DO;TT 'N1CEYOU HAVE NO MORE OF THIS SPELL IN YOUR MEMORY!W2';SIGNAL SPELLSHOW;END
SPNME=UPPER(SPNAME.SPLN)
IF EXISTS(SKPATH||SPNAME.SPLN) THEN SIGNAL CLLSPLL
SIGNAL SPELLSHOW
USEITEM1:
COMBTER=YES
TT 'F1N3CAHERE IS A LIST OF YOUR ITEMS:N1'
IF ITEM.1~=' ' THEN TT 'CF1. CE' LEFT(ITEM.1' ',25) 'CFCHARGES:CE' LEFT(WEIGHT.1' ',2) 'CFAMOUNT:CE' AMOUNT.1
IF ITEM.2~=' ' THEN TT 'CF2. CE' LEFT(ITEM.2' ',25) 'CFCHARGES:CE' LEFT(WEIGHT.2' ',2) 'CFAMOUNT:CE' AMOUNT.2
IF ITEM.3~=' ' THEN TT 'CF3. CE' LEFT(ITEM.3' ',25) 'CFCHARGES:CE' LEFT(WEIGHT.3' ',2) 'CFAMOUNT:CE' AMOUNT.3
IF ITEM.4~=' ' THEN TT 'CF4. CE' LEFT(ITEM.4' ',25) 'CFCHARGES:CE' LEFT(WEIGHT.4' ',2) 'CFAMOUNT:CE' AMOUNT.4
IF ITEM.5~=' ' THEN TT 'CF5. CE' LEFT(ITEM.5' ',25) 'CFCHARGES:CE' LEFT(WEIGHT.5' ',2) 'CFAMOUNT:CE' AMOUNT.5
IF ITEM.6~=' ' THEN TT 'CF6. CE' LEFT(ITEM.6' ',25) 'CFCHARGES:CE' LEFT(WEIGHT.6' ',2) 'CFAMOUNT:CE' AMOUNT.6
IF ITEM.7~=' ' THEN TT 'CF7. CE' LEFT(ITEM.7' ',25) 'CFCHARGES:CE' LEFT(WEIGHT.7' ',2) 'CFAMOUNT:CE' AMOUNT.7
IF ITEM.8~=' ' THEN TT 'CF8. CE' LEFT(ITEM.8' ',25) 'CFCHARGES:CE' LEFT(WEIGHT.8' ',2) 'CFAMOUNT:CE' AMOUNT.8
IF ITEM.9~=' ' THEN TT 'CF9. CE' LEFT(ITEM.9' ',25) 'CFCHARGES:CE' LEFT(WEIGHT.9' ',2) 'CFAMOUNT:CE' AMOUNT.9
IF ITEM.10~=' ' THEN TT 'CF10. CE' LEFT(ITEM.10' ',25) 'CFCHARGES:CE' LEFT(WEIGHT.10' ',2) 'CFAMOUNT:CE' AMOUNT.10
TT ' '
IF UPPER(ST.35)~=NONE THEN TT 'CFW. CE' ST.33
IF UPPER(ST.40)~=NONE THEN TT 'CFM. CE' ST.38
QUERY 'N1CBWHAT SHALL IT BE? C9[Q=QUIT] '
CMBIT=UPPER(RESULT)
IF CMBIT=p THEN SIGNAL QUIT
IF CMBIT='Q' THEN DO;COMBTER=NO;SIGNAL SHUFFLE;END
IF CMBIT='W' & ST.35~='NONE' THEN DO;SPNME=ST.35;SIGNAL CLLSPLL;END
IF CMBIT='M' & ST.40~='NONE' THEN DO;SPNME=ST.40;SIGNAL CLLSPLL;END
IF WEIGHT.CMBIT=0 THEN DO;TT 'CATHISCF' ITEM.CMBIT 'HAS NO CHARGES!W1';SIGNAL USEITEM1;END
IF EXISTS(IPATH||ITEM.CMBIT) & ITEM.CMBIT~=' ' THEN SIGNAL CMBUSE1
TT 'C9PICK A REAL ITEM...W1'
SIGNAL USEITEM1
CMBUSE1:
CALL OPEN(1,IPATH||ITEM.CMBIT,'R')
DO I=1 TO 10
JAKE.I=READLN(1)
END
CALL CLOSE(1)
IF JAKE.6=COMBAT THEN DO;TT 'N1C9THIS ITEM IS USED IN COMBAT! AND YOU ARE NOT IN COMBAT!W2';SIGNAL USEITEM1;END
SPNME=UPPER(JAKE.4)
COMBTER=YES
WEIGHT.CMBIT=WEIGHT.CMBIT-1
IF WEIGHT.CMBIT=0 & JAKE.10=WAND THEN DO;AMOUNT.CMBIT=AMOUNT.CMBIT-1;WEIGHT.CMBIT=10;END
IF WEIGHT.CMBIT=0 & JAKE.10~=WAND THEN DO;AMOUNT.CMBIT=AMOUNT.CMBIT-1;WEIGHT.CMBIT=1;END
IF AMOUNT.CMBIT=0 THEN DO;ITEM.CMBIT=' ';SIGNAL MOVEUP;END
SIGNAL CLLSPLL
CLLSPLL:
CALL OPEN(1,SKPATH||SPNME,'R')
DO I=1 TO 9
SP.I=READLN(1)
END
CALL CLOSE(1)
IF UPPER(SP.3)=COMBAT THEN DO;TT 'N1CAHMM. THAT IS A COMBAT SPELL & YOU ARE NOT IN COMBAT!W2';SIGNAL SPELLSHOW;END
IF UPPER(SP.1)=UNLOCK THEN DO;TT 'N1CATHIS IS USED TO UNLOCK DOORS! WAIT UNTIL YOU COME TO ONE!W2';SIGNAL SPELLSHOW;END
IF UPPER(SP.3)=HEAL THEN SIGNAL HEAL
IF UPPER(SP.3)=ILLUSION THEN SIGNAL LITUP
IF UPPER(SP.3)=TRAVEL THEN SIGNAL TRAVELER
SIGNAL SHUFFLE
TRAVELER:
IF UPPER(SP.1)=LOCATION THEN DO;TT 'N1CAYOU CAST A C9LOCATIONCA SPELL TO FIND YOUR WHEREABOUTSW2';DAM=MAP;DAX=X;DAY=Y;SPELLA=SP.8*ST.4;END
IF UPPER(SP.1)=FLY THEN DO;FLY=YES;SPELLB=SP.8*ST.4;SIGNAL FLY;END
IF UPPER(SP.1)=ANGELIC THEN DO;FLY=YES;SPELLB=SP.8*ST.4;SIGNAL FLY;END
IF UPPER(SP.1)=STUNNEL THEN DO;TUNNEL=YES;SPELLC=SP.8*ST.4;TT 'N1CAYOU CAST THE CFSHORT TUNNELCA. BEWARE OF GETTING TRAPPED!W2';END
IF UPPER(SP.1)=TELEPORT THEN SIGNAL TELEPORTER
IF UPPER(SP.1)=HOME THEN DO;MAP=0;BZZ=MAIN;SIGNAL TAKEDOWN;END
IF UPPER(SP.1)=CITY THEN DO;MAP=0;BZZ=MAIN;SIGNAL TAKEDOWN;END
IF UPPER(SP.1)=WALKER THEN DO;TT 'N1CAYOU CAST A WATER WALKER SPELL! HAPPY SAILING...W2';SPELLB=SP.8*ST.4;WALK=YES;END
IF UPPER(SP.1)=ASTRAL THEN SIGNAL ASTRALDO
SIGNAL TAKEDOWN
ASTRALDO:
TT 'F1N3C9SORRY, THERE ARE NO ASTRAL REALMS IN THIS VERSIONW2'
SIGNAL TAKEDOWN
TELEPORTER:
TT 'F1N3CAREMEMBER THAT THIS SPELL WILL PLACE YOU AT THE OPENING OF ANY C9INTERIORCA MAP!'
QUERY 'N1CBWHAT MAP DO YOU WISH TO TELEPORT TO? C9[Q=QUIT] '
TELP=UPPER(RESULT)
IF TELP=p THEN SIGNAL QUIT
IF TELP<13 THEN SIGNAL TELEPORTER
IF TELP='Q' THEN SIGNAL TAKEDOWN
IF TELP>30 THEN SIGNAL TELEPORTER
IF EXISTS(MAPATH||TELP) & DOOF=NOKAY THEN DO;DOOF=OKAY;SIGNAL SPECIAL3;END
IF EXISTS(MAPATH||TELP) THEN DO;SPAMOUNT.SPLN=SPAMOUNT.SPLN-1;CALL OPEN(1,BPATH||NAME,'W');DO I=1 TO 45;CALL WRITELN(1,SPNAME.I);CALL WRITELN(1,SPTOTAL.I);CALL WRITELN(1,SPAMOUNT.I);END;CALL CLOSE(1);SIGNAL SPECIAL3;END
TT 'N1C9THERE IS NO SUCH PLACEW1'
SIGNAL TELEPORTER
SPECIAL3:
CALL OPEN(1,MAPATH||'KEYMAP','R')
DO I=1 TO 85
MPNM.I=READLN(1)
MPTO.I=READLN(1)
MPLOC.I=READLN(1)
END
CALL CLOSE(1)
MAP=MPTO.TELP
LOC=MPLOC.TELP
MOVES=0
BBB=1
SIGNAL SPECIAL
FLY:
IF DOOF=OKAY & UPPER(ST.117)=UPPER(TIME STEED) THEN SIGNAL FLY2
IF DOOF=OKAY & UPPER(ST.117)=UPPER(PEGASUS) THEN SIGNAL FLY1
IF DOOF=OKAY & UPPER(ST.117)=UPPER(BLOOD DRAGON) THEN SIGNAL FLY1
IF DOOF=OKAY & UPPER(ST.117)=UPPER(STEEL DRAGON) THEN SIGNAL FLY1
IF FLY=YES & ST.162>1 THEN DO;TT 'C9N1YOU ARE ALREADY FLYING!W2';SIGNAL SHUFFLE;END
IF MAP>12 THEN DO;FLY=NO;TT 'N1C9YOU CANNOT FLY INDOORS!!W2';SIGNAL SHUFFLE;END
IF ST.121=0 & FLY~=YES THEN DO;TT 'CFYOUR MOUNT IS NOT CAPABLE OF FLYING...W2';SIGNAL SHUFFLE;END
QUERY 'F1N3CAHOW HIGH ARE YOU GONNA FLY? '
FLHT=RESULT
IF FLHT=p THEN SIGNAL QUIT
IF FLY~=YES & FLHT>ST.121 THEN DO;TT 'N1C9YOUR MOUNT CANNOT FLY THAT HIGH!W2';SIGNAL FLY;END
IF FLY=YES & FLHT>10000 THEN DO;TT 'N1C9YOU CANNOT FLY THAT HIGH!W1';SIGNAL FLY;END
IF FLHT<100 THEN DO;TT 'N1C9GET REAL! WHAT IS THE POINT? FLY AT LEAST 100 FT.W1';SIGNAL FLY;END
ST.162=FLHT
TT 'N1CAOKAY YOU ARE NOW CRUISING ATCF' FLHT 'CAFEET!W2'
IF FLY=YES THEN SIGNAL TAKEDOWN
FLY=YES
DOOF=OKAY
SIGNAL SHUFFLE
FLY1:
TT 'F1CAN2YOUR MOUNT IS CAPABLE OF C9TCAELEPORTING OR C9FCALYING'
SX 'CBN1WHICH DO YOU WANT TO DO? '
GETCHAR
TELEFLY=UPPER(RESULT)
IF TELEFLY=p THEN SIGNAL QUIT
IF TELEFLY='F' THEN DO;DOOF=NOKAY;SIGNAL FLY;END
IF TELEFLY='T' THEN DO;DOOF=NOKAY;SIGNAL TELEPORTER;END
SIGNAL FLY1
FLY2:
TT 'F1CAN2YOUR MOUNT IS CAPABLE OF C9ACASTRAL TRAVEL C9TCAELEPORTING & C9FCALYING'
SX 'CBN1WHICH DO YOU WANT TO DO? '
GETCHAR
TELEFLY=UPPER(RESULT)
IF TELEFLY=p THEN SIGNAL QUIT
IF TELEFLY='F' THEN DO;DOOF=NOKAY;SIGNAL FLY;END
IF TELEFLY='T' THEN DO;DOOF=NOKAY;SIGNAL TELEPORTER;END
IF TELEFLY='A' THEN DO;DOOF=NOKAY;SIGNAL ASTRALDO;END
SIGNAL FLY2
LITUP:
IF SP.1=INVISIBLE THEN DO;INVIS=YES;TT 'N1C9WHERE DID YOU GO?W2';SIGNAL TAKEDOWN;END
IF SP.1=INVISOPRIEST THEN DO;INVIS=YES;TT 'N1C9WHERE DID YOU GO?W2';SIGNAL TAKEDOWN;END
HEAL:
IF ST.26=ST.27 THEN DO;TT 'N1CAYOU DO NOT NEED HEALING!W2';SIGNAL SHUFFLE;END
IF DOOF=NOKAY THEN DO;DOOF=OKAY;SIGNAL SHUFFLE;END
IF COMBTER=YES THEN DO;COMBTER=NO;SIGNAL SHUFFLE;END
IF CMBTER=YES THEN DO;COMBTER=NO;SIGNAL COMBATPREP;END
SPAMOUNT.SPLN=SPAMOUNT.SPLN-1
CALL OPEN(1,BPATH||NAME,'W')
DO I=1 TO 45
CALL WRITELN(1,SPNAME.I)
CALL WRITELN(1,SPTOTAL.I)
CALL WRITELN(1,SPAMOUNT.I)
END
CALL CLOSE(1)
SIGNAL SHUFFLE
PSNC:
IF ST.50=POISONED THEN DO;TT 'N1CAYOU CURE YOURSELF OF THAT NASTY POISONW2';ST.50=OKAY;SPAMOUNT.SPLN=SPAMOUNT.SPLN-1;CALL OPEN(1,BPATH||NAME,'W');DO I=1 TO 45;CALL WRITELN(1,SPNAME.I);CALL WRITELN(1,SPTOTAL.I);CALL WRITELN(1,SPAMOUNT.I);END;CALL CLOSE(1);SIGNAL SHUFFLE;END
TT 'N1C9YOU ARE NOT POISONED!W2'
SIGNAL SPELLSHOW
STABLES:
TT 'F1'
SFI MPATH||'STABLES'
TT 'N1 CBGOLD:CF' ST.170
SX 'N1CBWHAT CAN YOU HANDLE, BUDDY?C9 '
GETCHAR
MOX=UPPER(RESULT)
IF MOX=p THEN SIGNAL QUIT
IF MOX=' ' THEN DO;MAIN=YES;SIGNAL MAIN;END
IF MOX='Q' THEN DO;MAIN=YES;SIGNAL MAIN;END
IF MOX<1 | MOX>9 THEN DO;TT 'N1CAWHY GOOD SIR THERE IS NO SUCH MOUNT AVAILABLE...W2';SIGNAL STABLES;END
CALL OPEN(1,MOUNPATH||'MOUNTS','R')
DO I=1 TO 9
MOUNP.I=READLN(1)
END
CALL CLOSE(1)
IF ~EXISTS(MOUNPATH||MOUNP.MOX) THEN SIGNAL STABLES
CALL OPEN(1,MOUNPATH||MOUNP.MOX,'R')
DO I=1 TO 10
MAX.I=READLN(1)
END
CALL CLOSE(1)
IF MAX.3>ST.170 THEN DO;TT 'N1CAYOU DON''T HAVE THAT MUCH MONEY!W2';SIGNAL STABLES;END
IF MAX.10>ST.93 THEN DO;TT 'N1CAYOU DO NOT POSSESS THE SKILLS TO RIDE SUCH A BEAST!W2';SIGNAL STABLES;END
TT 'N1CAAC9' MAX.1 'CACOSTSCB' MAX.3 'CAGOLD'
SX 'N1CCWILL YOU BE TAKIN'' HER HOME? C9[Y/N] '
GETCHAR
MSDA=UPPER(RESULT)
IF MSDA=p THEN SIGNAL QUIT
IF MSDA='N' THEN SIGNAL STABLES
QUERY 'N1CFGREAT! AND WHAT SHALL YOU NAME YOUR TRUSTYC9' MAX.1'? '
MNAME=RESULT
ST.170=ST.170-MAX.3
ST.126=MNAME
ST.117=MAX.1
ST.118=MAX.2
ST.119=MAX.4
ST.120=MAX.5
ST.121=MAX.6
ST.122=MAX.7
ST.123=MAX.8
ST.125=MAX.9
SIGNAL MAIN
LORDSLIST:
TT 'F1N2CEHERE IS A LIST OF THE RESIDENTS OF C9THE EARTH LORDSCE REALMN1'
CALL OPEN(1,UPATH||'LORDS','R')
DO UNTIL EOF(1)=1
LORD=READLN(1)
USER=READLN(1)
IF LORD~='' THEN DO;TT 'CAREALM RESIDENT:CB' LEFT(LORD' ',30)'CC:PLAYER:CF' LEFT(USER' ',20);END
END
CALL CLOSE(1)
TT 'N1CAHIT A KEY TO STOP STARING...G1'
DO; MAIN=YES;SIGNAL MAIN;END
ICON:
NOPE=NO
ST.159=MAP
ST.160=X
ST.161=Y
SIGNAL ICON1
NEWMAP:
IF EXISTS(CPATH||'CLEAN') THEN ADDRESS COMMAND 'C:CLEAN'
CALL OPEN(1,CODEPATH||MAP,'R')
DO I=1 TO 350
MIPS.I=READLN(1)
END
CALL CLOSE(1)
CALL OPEN(1,DROPATH||MAP,'R')
DO I=1 TO 350
LUUK.I=READLN(1)
END
CALL CLOSE(1)
SIGNAL OUTSIDE
ICON1:
BZZ=OUTSIDE
X=ST.160
Y=ST.161
TEXT=OUTDOOR
MAP=ST.159
IF ST.3=NINJA THEN ICON=''
IF ST.3=PRIEST THEN ICON='+'
IF ST.3=WARRIOR THEN ICON=''
IF ST.3=WIZARD THEN ICON='-*'
IF ST.3=MONK THEN ICON='**'
IF ST.3=ANTI KNIGHT THEN ICON=''
IF ST.3=KNIGHT THEN ICON='+'
IF ST.3=GUIDE THEN ICON='*'
IF ST.3=ROGUE THEN ICON=''
IF ST.3=WARRIORROGUE THEN ICON=''
IF ST.3=WARRIORWIZARD THEN ICON=''
IF ST.3=WARRIORWIZARDROGUE THEN ICON=''
IF ST.3=WARRIORPRIEST THEN ICON=''
IF ST.3=WIZARDROGUE THEN ICON='-*'
IF ST.3=WIZARDPRIEST THEN ICON='+'
IF ST.3=AMAZONIAN THEN ICON=''
IF ST.3=PRIESTESS THEN ICON='+'
IF ST.3=AMAZONIANWITCH THEN ICON=''
IF ST.3=AMAZONIANWITCHROGUE THEN ICON=''
IF ST.3=AMAZONIAN PRIESTESS THEN ICON=''
IF ST.3=AMAZONIANROGUE THEN ICON=''
IF ST.3=WITCHPRIESTESS THEN ICON='+'
IF ST.3=WITCHROGUE THEN ICON='-*'
IF ST.3=WITCH THEN ICON='-*'
MOVES=0
MLN1='BCC9MOUNT:CF' LEFT(ST.117' ',11)
MLN2='BCCCHEALTH:CE' ST.122
MLN3='BCCANAME:CB' LEFT(ST.126' ',11)
MOUNDEW=YES
SIGNAL NEWMAP
XMOVE:
IF X=0 THEN XPOS='D'ICON'C'
IF X=1 THEN XPOS='D'ICON'C'
IF X=2 THEN XPOS='D'ICON'C'
IF X=3 THEN XPOS='D'ICON'C'
IF X=4 THEN XPOS='D'ICON'C'
IF X=5 THEN XPOS='D'ICON'C'
IF X=6 THEN XPOS='D'ICON'C'
IF X=7 THEN XPOS='D'ICON'C'
IF X=8 THEN XPOS='D'ICON'C'
IF X=9 THEN XPOS='D'ICON'C'
IF X=10 THEN XPOS='D'ICON'C'
IF X=11 THEN XPOS='D'ICON'C'
IF X=12 THEN XPOS='D'ICON'C'
IF X=13 THEN XPOS='D'ICON'C'
IF X=14 THEN XPOS='D'ICON'C'
IF X=15 THEN XPOS='D'ICON'C'
IF X=16 THEN XPOS='D'ICON'C'
IF X=17 THEN XPOS='D'ICON'C'
IF X=18 THEN XPOS='D'ICON'C'
IF X=19 THEN XPOS='D'ICON'C'
IF X=20 THEN XPOS='D'ICON'C'
IF X=21 THEN XPOS='D'ICON'C'
IF X=22 THEN XPOS='D'ICON'C'
IF X=23 THEN XPOS='D'ICON'C'
IF X=24 THEN XPOS='D'ICON'C'
IF X=25 THEN XPOS=''ICON
SIGNAL YMOVE
YMOVE:
MPLINE1=MPLINE1'CF'
MPLINE1='CCF'MP.1
MPLINE2='CCF'MP.2
MPLINE3='CCF'MP.3
MPLINE4='CCF'MP.4
MPLINE5='CCF'MP.5
MPLINE6='CCF'MP.6
MPLINE7='CCF'MP.7
MPLINE8='CCF'MP.8
MPLINE9='CCF'MP.9
MPLINE10='CCF'MP.10
MPLINE11='CCF'MP.11
MPLINE12='CCF'MP.12
MPLINE13='CCF'MP.13
MPLINE14='CCF'MP.14
MPLINE15='CCF'MP.15
MPLINE16='CCF'MP.16
IF Y=2 THEN MPLINE2=MPLINE2'D'XPOS'CF'
IF Y=3 THEN MPLINE3=MPLINE3'D'XPOS'CF'
IF Y=4 THEN MPLINE4=MPLINE4'D'XPOS'CF'
IF Y=5 THEN MPLINE5=MPLINE5'D'XPOS'CF'
IF Y=6 THEN MPLINE6=MPLINE6'D'XPOS'CF'
IF Y=7 THEN MPLINE7=MPLINE7'D'XPOS'CF'
IF Y=8 THEN MPLINE8=MPLINE8'D'XPOS'CF'
IF Y=9 THEN MPLINE9=MPLINE9'D'XPOS'CF'
IF Y=10 THEN MPLINE10=MPLINE10'D'XPOS'CF'
IF Y=11 THEN MPLINE11=MPLINE11'D'XPOS'CF'
IF Y=12 THEN MPLINE12=MPLINE12'D'XPOS'CF'
IF Y=13 THEN MPLINE13=MPLINE13'D'XPOS'CF'
IF Y=14 THEN MPLINE14=MPLINE14'D'XPOS'CF'
IF Y=15 THEN MPLINE15=MPLINE15'D'XPOS'CF'
MPLINE16=MPLINE16'CF'
SIGNAL MAPSHOW
MAPSTUFF:
SIGNAL XMOVE
OUTSIDE:
DO;CALL OPEN(1,MAPATH||MAP,'R');DO I=1 TO 16;MP.I=READLN(1);END;CALL CLOSE(1);END
MPLINE1='CCF'MP.1
MPLINE2='CCF'MP.2
MPLINE3='CCF'MP.3
MPLINE4='CCF'MP.4
MPLINE5='CCF'MP.5
MPLINE6='CCF'MP.6
MPLINE7='CCF'MP.7
MPLINE8='CCF'MP.8
MPLINE9='CCF'MP.9
MPLINE10='CCF'MP.10
MPLINE11='CCF'MP.11
MPLINE12='CCF'MP.12
MPLINE13='CCF'MP.13
MPLINE14='CCF'MP.14
MPLINE15='CCF'MP.15
MPLINE16='CCF'MP.16
SIGNAL XMOVE
MAPSHOW:
IF BBB=1 THEN DO;TT 'F1';SFI SPATH||'MAPBACK';END
BBB=BBB+1
IF OLDTEXT=TEXT THEN SIGNAL MOVE
DO;CALL OPEN(1,DPATH||TEXT,'R');DO I=1 TO 13;TX.I=READLN(1);END;CALL CLOSE(1);END
IF TX.1=' ' THEN TX.1=''
IF TX.2=' ' THEN TX.2=''
IF TX.3=' ' THEN TX.3=''
IF TX.4=' ' THEN TX.4=''
IF TX.5=' ' THEN TX.5=''
IF TX.6=' ' THEN TX.6=''
IF TX.7=' ' THEN TX.7=''
IF TX.8=' ' THEN TX.8=''
IF TX.9=' ' THEN TX.9=''
IF TX.10=' ' THEN TX.10=''
IF TX.11=' ' THEN TX.11=''
IF TX.12=' ' THEN TX.12=''
IF TX.13=' ' THEN TX.13=''
TEXT1='B 'CENTER(TX.1' ',23)''
TEXT2=' 'CENTER(TX.2' ',23)''
TEXT3=' 'CENTER(TX.3' ',23)''
TEXT4=' 'CENTER(TX.4' ',23)''
TEXT5=' 'CENTER(TX.5' ',23)''
TEXT6=' 'CENTER(TX.6' ',23)''
TEXT7=' 'CENTER(TX.7' ',23)''
TEXT8=' 'CENTER(TX.8' ',23)''
TEXT9=' 'CENTER(TX.9' ',23)''
TEXT10=' 'CENTER(TX.10' ',23)''
TEXT11=' 'CENTER(TX.11' ',23)''
TEXT12=' 'CENTER(TX.12' ',23)''
TEXT13=' 'CENTER(TX.13' ',23)''
SIGNAL MOVE
MOVE:
IF MNTMV=ST.119*2 & UPPER(ST.117)=NONE THEN DO;TT 'CAYOUR LEGS ARE TOO TIRED TO CONTINUE. YOU STOP FOR A REST!W2';RESTZ=0;SIGNAL RESTED;END
IF MNTMV=ST.119*2 & MAP<13 THEN DO;TT 'CAYOUR MOUNT IS TIRED AND STOPS FOR A REST!W2';RESTZ=0;SIGNAL RESTED;END
MNTMV=MNTMV+1
IF POISONED=YES THEN ST.26=ST.26-1
IF ST.26<1 THEN SIGNAL YOUDEAD
ST.160=X
ST.161=Y
IF MOVES>0 THEN SIGNAL MOVENEW
TT 'F0'MPLINE1'CF'
TT ''MPLINE2'CF'
TT ''MPLINE3'CF'
TT ''MPLINE4'CF'
TT ''MPLINE5'CF'
TT ''MPLINE6'CF'
TT ''MPLINE7'CF'
TT ''MPLINE8'CF'
TT ''MPLINE9'CF'
TT ''MPLINE10'CF'
TT ''MPLINE11'CF'
TT ''MPLINE12'CF'
TT ''MPLINE13'CF'
TT ''MPLINE14'CF'
TT ''MPLINE15'CF'
TT ''MPLINE16'CF'
BB=X
CC=Y
IF OLDTEXT=TEXT THEN SIGNAL LOSEIT
SIGNAL TEXTDO
MOVENEW:
IF Y=2 & DRC=UP THEN TT 'F0!2'MPLINE3'CF'
IF Y=3 & DRC=UP THEN TT 'F0!3'MPLINE4'CF'
IF Y=4 & DRC=UP THEN TT 'F0!4'MPLINE5'CF'
IF Y=5 & DRC=UP THEN TT 'F0!5'MPLINE6'CF'
IF Y=6 & DRC=UP THEN TT 'F0!6'MPLINE7'CF'
IF Y=7 & DRC=UP THEN TT 'F0!7'MPLINE8'CF'
IF Y=8 & DRC=UP THEN TT 'F0!8'MPLINE9'CF'
IF Y=9 & DRC=UP THEN TT 'F0!9'MPLINE10'CF'
IF Y=10 & DRC=UP THEN TT 'F0!A'MPLINE11'CF'
IF Y=11 & DRC=UP THEN TT 'F0!B'MPLINE12'CF'
IF Y=12 & DRC=UP THEN TT 'F0!C'MPLINE13'CF'
IF Y=13 & DRC=UP THEN TT 'F0!D'MPLINE14'CF'
IF Y=14 & DRC=UP THEN TT 'F0!E'MPLINE15'CF'
IF Y=3 & DRC=DWN THEN TT 'F0!1'MPLINE2'CF'
IF Y=4 & DRC=DWN THEN TT 'F0!2'MPLINE3'CF'
IF Y=5 & DRC=DWN THEN TT 'F0!3'MPLINE4'CF'
IF Y=6 & DRC=DWN THEN TT 'F0!4'MPLINE5'CF'
IF Y=7 & DRC=DWN THEN TT 'F0!5'MPLINE6'CF'
IF Y=8 & DRC=DWN THEN TT 'F0!6'MPLINE7'CF'
IF Y=9 & DRC=DWN THEN TT 'F0!7'MPLINE8'CF'
IF Y=10 & DRC=DWN THEN TT 'F0!8'MPLINE9'CF'
IF Y=11 & DRC=DWN THEN TT 'F0!9'MPLINE10'CF'
IF Y=12 & DRC=DWN THEN TT 'F0!A'MPLINE11'CF'
IF Y=13 & DRC=DWN THEN TT 'F0!B'MPLINE12'CF'
IF Y=14 & DRC=DWN THEN TT 'F0!C'MPLINE13'CF'
IF Y=15 & DRC=DWN THEN TT 'F0!D'MPLINE14'CF'
IF Y=2 THEN TT 'F0!1'MPLINE2'CF'
IF Y=3 THEN TT 'F0!2'MPLINE3'CF'
IF Y=4 THEN TT 'F0!3'MPLINE4'CF'
IF Y=5 THEN TT 'F0!4'MPLINE5'CF'
IF Y=6 THEN TT 'F0!5'MPLINE6'CF'
IF Y=7 THEN TT 'F0!6'MPLINE7'CF'
IF Y=8 THEN TT 'F0!7'MPLINE8'CF'
IF Y=9 THEN TT 'F0!8'MPLINE9'CF'
IF Y=10 THEN TT 'F0!9'MPLINE10'CF'
IF Y=11 THEN TT 'F0!A'MPLINE11'CF'
IF Y=12 THEN TT 'F0!B'MPLINE12'CF'
IF Y=13 THEN TT 'F0!C'MPLINE13'CF'
IF Y=14 THEN TT 'F0!D'MPLINE14'CF'
IF Y=15 THEN TT 'F0!E'MPLINE15'CF'
BB=X
CC=Y
IF OLDTEXT=TEXT THEN SIGNAL LOSEIT
SIGNAL TEXTDO
TEXTDO:
TT 'F0'TEXT1
TT ''TEXT2
TT ''TEXT3
TT ''TEXT4
TT ''TEXT5
TT ''TEXT6
TT ''TEXT7
TT ''TEXT8
TT ''TEXT9
TT ''TEXT10
TT ''TEXT11
TT ''TEXT12
TT ''TEXT13
OLDTEXT=TEXT
IF MOUNDEW=YES THEN DO;TT 'F0'MLN1;TT 'F0'MLN2;TT 'F0'MLN3;END
MOUNDEW=NO
SIGNAL LOSEIT
LOSEIT:
GETUSER 1200032
YTIME=RESULT
BTIME=YTIME/10
IF BTIME>=TLIMIT THEN DO;TT 'CAF1N6YOU HAVE EXCEEDED YOUR TIME LIMIT THIS TURN!W2';SIGNAL QUIT;END
CTIME=TLIMIT-BTIME
IF SPELLA>0 THEN DO;DAM=MAP;DAX=X;DAY=Y;END
IF SPELLB=1 & FLY=YES THEN DO;FLY=NO;ST.162=0;SPELLB=0;TT 'F0BCAYOUR FLY SPELL WEARS OFF!W2';END
IF SPELLB=1 & WALK=YES THEN DO;WALK=NO;SPELLB=0;TT 'F0BCAYOUR WATER WALKING SPELL WEARS OFF!W2';END
IF SPELLC=1 THEN DO;SPELLC=0;TUNNEL=NO;TT 'F0BC9YOUR TUNNEL SPELL WORE OFF!W2';END
FTRNAME=READLN(1) /* THIS IS ALL FOR SPECIAL FEATURES LIKE */
TEXT=READLN(1) /* WALLS WITH RIDDLES QUESTIONS OR GATEKEEPERS */
CALL CLOSE(1)
CALL OPEN(1,DPATH||TEXT,'R')
DO I=1 TO 13
TX.I=READLN(1)
END
CALL CLOSE(1)
TEXT1='B 'CENTER(TX.1' ',23)''
TEXT2=' 'CENTER(TX.2' ',23)''
TEXT3=' 'CENTER(TX.3' ',23)''
TEXT4=' 'CENTER(TX.4' ',23)''
TEXT5=' 'CENTER(TX.5' ',23)''
TEXT6=' 'CENTER(TX.6' ',23)''
TEXT7=' 'CENTER(TX.7' ',23)''
TEXT8=' 'CENTER(TX.8' ',23)''
TEXT9=' 'CENTER(TX.9' ',23)''
TEXT10=' 'CENTER(TX.10' ',23)''
TEXT11=' 'CENTER(TX.11' ',23)''
TEXT12=' 'CENTER(TX.12' ',23)''
TEXT13=' 'CENTER(TX.13' ',23)''
TT 'F0'TEXT1
TT ''TEXT2
TT ''TEXT3
TT ''TEXT4
TT ''TEXT5
TT ''TEXT6
TT ''TEXT7
TT ''TEXT8
TT ''TEXT9
TT ''TEXT10
TT ''TEXT11
TT ''TEXT12
TT ''TEXT13
OLDTEXT=TEXT
QUERY 'F0BC9WHAT IS THE ANSWER TO THIS RIDDLE?C0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXDCF '
RDANS=UPPER(RESULT)
IF RDANS=p THEN SIGNAL QUIT
IF RDANS=UPPER(FTRNAME) THEN DO;TEXT=CORRECT;SIGNAL XMOVE;END
TEXT=WRONG
SIGNAL BUMPBACK
SPECIALFEATURE1:
CALL OPEN(1,PLACEPATH||MAP'/'LOC,'R')
FTRNAME=READLN(1) /* THIS IS ALL FOR SPECIAL FEATURES */
TEXT=READLN(1) /* FOR SPECIAL FEATURES THAT HAVE A */
CALL CLOSE(1) /* BUMPBACK BUT AREN'T LISTED... */
SIGNAL BUMPBACK
SPECIALFEATURE2:
IF ST.108~=YES & ST.59<1 THEN DO;TEXT=SKILLNEED;SIGNAL BUMPBACK;END
IF ST.59>0 THEN CLMB=VRND(1,100)
IF ST.59>0 & CLMB>ST.59 THEN DO;TEXT=FAIL;SIGNAL BUMPBACK;END
CALL OPEN(1,PLACEPATH||MAP'/'LOC,'R')
FTRNAME=READLN(1) /* THIS IS ALL FOR */
TEXT=READLN(1) /* FOR SPECIAL FEATURES THAT HAVE A */
CALL CLOSE(1) /* NEED TO CLIMB TO GO ON... */
SIGNAL XMOVE
SPECIALFEATURE3:
IF ST.165<1 THEN SIGNAL TRAPHIT
TRMISS=VRND(1,100)
IF TRMISS>ST.165 THEN SIGNAL TRAPHIT
CALL OPEN(1,PLACEPATH||MAP'/'LOC,'R')
FTRNAME=READLN(1) /* THIS IS ALL FOR */
TEXT=READLN(1) /* FOR SPECIAL FEATURES THAT HAVE A */
CALL CLOSE(1) /* TRAP */
SIGNAL XMOVE
TRAPHIT:
CALL OPEN(1,PLACEPATH||MAP'/'LOC,'R')
FTRNAM=READLN(1) /* THIS IS ALL FOR */
TEXT=READLN(1) /* FOR SPECIAL FEATURES THAT HAVE A */
CALL CLOSE(1) /* TRAP */
DMX1=VRND(5,15)
DMX2=VRND(1,10)
DMX3=VRND(3,13)
DMX4=VRND(10,25)
DAMX=VRND(5,15)
IF FTRNAM='FIRE1' THEN DO;TEXT=FIRE;DAMX=DMX1;END
IF FTRNAM='SPIKES1' THEN DO;TEXT=SPIKES;DAMX=DMX2;END
IF FTRNAM='PENDULUM1' THEN DO;TEXT=PENDULUM;DAMX=DMX3;END
IF FTRNAM='ELECTRIC1' THEN DO;TEXT=ELECTRIC;DAMX=DMX4;END
IF FTRNAM='ELECTRICITY1' THEN DO;TEXT=ELECTRIC;DAMX=DMX4;END
ST.26=ST.26-DAMX
SIGNAL XMOVE
SPECIALFEATURE4:
CALL OPEN(1,PLACEPATH||MAP'/'LOC,'R')
QTYPE=READLN(1) /* THIS IS ALL FOR */
QNUM=READLN(1) /* FOR SPECIAL FEATURES THAT HAVE A */
CALL CLOSE(1) /* QUEST */
IF QTYPE=ST.109 & QNUM=ST.110 THEN DO;TEXT=IMPOSSIBLE;ST.109=YES;END
IF QTYPE=ST.111 & QNUM=ST.112 THEN DO;TEXT=CLERGY;ST.111=YES;END
SIGNAL XMOVE
SPECQ:
CALL OPEN(1,PLACEPATH||MAP'/'LOC,'R')
FQNUM=READLN(1)
CALL CLOSE(1)
IF FQNUM=ST.136 THEN SIGNAL YOUWON
SIGNAL XMOVE
YOUWON:
SFI DPATH||'WINNER'
TT 'G1'
SFI DPATH||'WINNER1'
TT 'G1'
SFI DPATH||'CREDITS'
TT 'G1'
CALL OPEN(1,UPATH||'WON','W')
CALL WRITELN(1,NAME)
CALL CLOSE(1)
EL='W'
IF EXISTS(SPATH||'LORDY')=1 THEN EL='A'
CALL OPEN(1,SPATH||'LORDY',EL)
CALL WRITELN(1,NAME)
CALL WRITELN(1,ST.1)
CALL WRITELN(1,ST.2)
CALL WRITELN(1,ST.3)
CALL WRITELN(1,ST.4)
CALL CLOSE(1)
EXIT
SPECIAL:
CALL OPEN(1,PLACEPATH||MAP'/'LOC,'R')
PLACENAME=READLN(1)
LOCNUM=READLN(1)
XPOS=READLN(1)
YPOS=READLN(1)
MAPNUM=READLN(1)
NEWX=READLN(1)
NEWY=READLN(1)
CALL CLOSE(1)
IF MAPNUM=0 THEN SIGNAL MAIN
DO;MAP=MAPNUM;X=NEWX;Y=NEWY;SIGNAL ICON;END
SIGNAL XMOVE
SPECENCOUNTER:
CALL OPEN(1,PLACEPATH||MAP'/'LOC,'R')
MONNAME=READLN(1)
FLAG=READLN(1) /*IN CASE CHARACTER RUNS...WHEN WINS THEN FOUGHT=FLAG*/
CALL CLOSE(1)
IF FOUGHT=FLAG THEN SIGNAL XMOVE
DO;MNX.MXM=MONNAME;SIGNAL LOADMON1;END
SIGNAL XMOVE
RUN:
FOUGHT=0
TT 'N1CBS1YOU SHOW YOUR COWARDICE BY RUNNING FROM THE BATTLE...S0W1'
SIGNAL SHUFFLE
BUMPBACK:
IF RSP='1' THEN DO;DRC=UP;Y=Y-1;END
IF RSP='1' THEN X=X+1
IF RSP='3' THEN DO;DRC=UP;X=X-1;END
IF RSP='3' THEN Y=Y-1
IF RSP='7' THEN DO;DRC=DWN;X=X+1;END
IF RSP='7' THEN Y=Y+1
IF RSP='9' THEN DO;DRC=DWN;Y=Y+1;END
IF RSP='9' THEN X=X-1
IF RSP='2' THEN Y=Y-1
IF RSP='4' THEN X=X+1
IF RSP='6' THEN X=X-1
IF RSP='8' THEN Y=Y+1
IF NOPE=YES THEN DO;BBB=1;MOVES=0;SIGNAL ICON;END
SIGNAL XMOVE
HOT:
SX ' '
GETCHAR
RSP=RESULT
IF RSP='[' THEN SIGNAL COLD
SIGNAL COLD
COLD:
SX ' '
GETCHAR
RXP=UPPER(RESULT)
IF RXP=p THEN SIGNAL QUIT
IF RXP='D' THEN DO;X=X-1;RSP=4;DRC=SME;END
IF RXP='A' THEN DO;Y=Y-1;RSP=8;DRC=UP;END
IF RXP='B' THEN DO;Y=Y+1;RSP=2;DRC=DWN;END
IF RXP='C' THEN DO;X=X+1;RSP=6;DRC=SME;END
MOVES=MOVES+1
IF MOVES=8 THEN SIGNAL MONSTERMAYBE
IF MOVES=16 THEN SIGNAL MONSTERMAYBE
IF MOVES=24 THEN SIGNAL MONSTERMAYBE
IF MOVES=32 THEN SIGNAL MONSTERMAYBE
IF MOVES=40 THEN DO;MOVES=0;SIGNAL MONSTERMAYBE;END
SIGNAL MAPCALL
DOCREAD:
SFI MPATH||'DOCS'
SX 'N1CB(A WISE CHOICE INDEED) INPUT YOUR SELECTIONCA>>> '
GETCHAR
DOCS=UPPER(RESULT)
IF DOCS=p THEN SIGNAL QUIT
IF DOCS='Q' THEN DO;MAIN=YES;SIGNAL MAIN;END
IF DOCS=1 THEN SFI DPATH||'RULES'
IF DOCS=2 THEN SFI DPATH||'COMMANDS'
IF DOCS=3 THEN SFI DPATH||'SPECS'
IF DOCS=4 THEN SFI DPATH||'MAIN'
SIGNAL DOCREAD
RESTED:
MNTMV=0
IF RESTZ=2 THEN DO;TT 'F1N4S1C9YOU MAY NOT REST MORE THAN 2 TIMES PER TURN!W2S0';MAIN=YES;SIGNAL SHUFFLE;END
TT 'F1N4S1CCYOU DECIDE TO BED DOWN IN A NEARBY NOOK TO REST FOR 8 HOURS'
TT 'SO YOU CAN GAIN HEALTH OR ALLOW YOUR SPELLS TO SINK IN.W2S0'
SPELLA=0
SPELLB=0
SPELLC=0
BRED=NO
MXSD=VRND(1,20)
IF MXSD<4 THEN SIGNAL MONSTERCALL
RESTZ=RESTZ+1
ST.26=ST.26+2
IF ST.26>ST.27 THEN ST.26=ST.27
SD=1
IF EXISTS(BPATH||NAME) THEN DO;CALL OPEN(1,BPATH||NAME,'R');DO I=1 TO 45;SPNAME.I=READLN(1);SPT.I=READLN(1);SPA.I=READLN(1);END;CALL CLOSE(1);SIGNAL SPELLGAIN;END
TT 'N1CAYOU WAKE UP ALL REFRESHED AND LUCKY TO BE ALIVE!W1'
DO;MAIN=YES;SIGNAL SHUFFLE;END
SPELLGAIN:
SPA.SD=SPT.SD
SD=SD+1
IF SPNAME.SD=' ' THEN DO;TT 'CAAND YOU WAKE UP!!!W1';CALL OPEN(1,BPATH||NAME,'W');DO I=1 TO 45;CALL WRITELN(1,SPNAME.I);CALL WRITELN(1,SPT.I);CALL WRITELN(1,SPA.I);END;CALL CLOSE(1);MAIN=YES;SIGNAL SHUFFLE;END
SIGNAL SPELLGAIN
SPELLBOOK:
IF ST.97=NO THEN DO;TT 'N1C9YOU ARE NOT A SPELLCASTER!W2';MAIN=YES;SIGNAL MAIN;END
TT 'F1N2CACHOOSING YOUR SPELLS FOR ADVENTURING WILL ERASE ANY SPELL'
TT 'YOU HAVE PREVIOUSLY REMEMBERED. IN OTHER WORDS YOU WILL HAVE TO'
TT 'CHOOSE ALL SPELLS NOW AND THEN C9RESTCA TO RETAIN THEM...'
TT 'N2CASPELL TYPE:CF' ST.98
SX 'N1CBDO YOU WISH TO PICK YOUR SPELLS NOW?C9 [Y/N] '
GETCHAR
SPLL=UPPER(RESULT)
IF SPLL=p THEN SIGNAL QUIT
IF SPLL='N' THEN DO;MAIN=YES;SIGNAL SHUFFLE;END
IF SPLL='Q' THEN DO;MAIN=YES;SIGNAL SHUFFLE;END
SIGNAL SPELLPICK
SPELLPICK:
L1=DON
L2=DON
L3=DON
L4=DON
L5=DON
L6=DON
L7=DON
L8=DON
L11=DON
L12=DON
L13=DON
L14=DON
L15=DON
L16=DON
L17=DON
L18=DON
IF EXISTS(BPATH||NAME) THEN DO;ADDRESS COMMAND 'DELETE "'BPATH''NAME'"';END
IF ST.98=MAGIC | ST.98=BOTH THEN SIGNAL MAGICPICK
SIGNAL PRIESTPICK
MAGICPICK:
IF ST.4>0 & L11=DON THEN DO;LXV=1;SPX=ST.99;CALL OPEN(1,SKPATH||'MAG1','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL MAGICMAIN;END
IF ST.4>2 & L12=DON THEN DO;LXV=2;SPX=ST.100;CALL OPEN(1,SKPATH||'MAG2','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL MAGICMAIN;END
IF ST.4>4 & L13=DON THEN DO;LXV=3;SPX=ST.101;CALL OPEN(1,SKPATH||'MAG3','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL MAGICMAIN;END
IF ST.4>6 & L14=DON THEN DO;LXV=4;SPX=ST.102;CALL OPEN(1,SKPATH||'MAG4','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL MAGICMAIN;END
IF ST.4>8 & L15=DON THEN DO;LXV=5;SPX=ST.103;CALL OPEN(1,SKPATH||'MAG5','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL MAGICMAIN;END
IF ST.4>10 & L16=DON THEN DO;LXV=6;SPX=ST.104;CALL OPEN(1,SKPATH||'MAG6','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL MAGICMAIN;END
IF ST.4>12 & L17=DON THEN DO;LXV=7;SPX=ST.105;CALL OPEN(1,SKPATH||'MAG7','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL MAGICMAIN;END
IF ST.4>14 & L18=DON THEN DO;LXV=8;SPX=ST.106;CALL OPEN(1,SKPATH||'MAG8','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL MAGICMAIN;END
TT 'N1CATHAT WAS THE HIGHEST LEVEL OF MAGIC SPELL YOU CAN CAST...W1'
IF ST.98=BOTH THEN SIGNAL PRIESTPICK
TT 'N1DON''T FORGET YOU MUST C9RESTCA TO RETAIN THE KNOWLEDGE!!!W2'
DO;MAIN=YES;SIGNAL SHUFFLE;END
MAGICMAIN:
IF SPX=0 & LXV=1 THEN DO;L11=DONE;SIGNAL MAGICPICK;END
IF SPX=0 & LXV=2 THEN DO;L12=DONE;SIGNAL MAGICPICK;END
IF SPX=0 & LXV=3 THEN DO;L13=DONE;SIGNAL MAGICPICK;END
IF SPX=0 & LXV=4 THEN DO;L14=DONE;SIGNAL MAGICPICK;END
IF SPX=0 & LXV=5 THEN DO;L15=DONE;SIGNAL MAGICPICK;END
IF SPX=0 & LXV=6 THEN DO;L16=DONE;SIGNAL MAGICPICK;END
IF SPX=0 & LXV=7 THEN DO;L17=DONE;SIGNAL MAGICPICK;END
IF SPX=0 & LXV=8 THEN DO;L18=DONE;SIGNAL MAGICPICK;END
TT 'F1N2CAMAGIC SPELL CHOICES FOR LEVELCF' LXV 'CASPELLS'
TT 'N1CB1. CA'CSP.1
TT 'CB2. CA'CSP.2
TT 'CB3. CA'CSP.3
IF CSP.4~=' ' THEN TT 'CB4. CA'CSP.4
IF CSP.5~=' ' THEN TT 'CB5. CA'CSP.5
IF CSP.6~=' ' THEN TT 'CB6. CA'CSP.6
TT 'N1CBSPELLS AVAILABLE:CF' SPX
SX 'N2CESELECT THE C9# CEOF THE SPELL YOU WISH TO LEARN '
GETCHAR
PXS=UPPER(RESULT)
IF PXS=p THEN SIGNAL QUIT
IF PXS<1 | PXS>6 THEN SIGNAL MAGICMAIN
IF PXS>0 & PXS<7 THEN SIGNAL MADDIT
SIGNAL MAGICMAIN
MADDIT:
SX 'N1CAAND HOW MANY TIMES DO YOU WISH TO RETAIN IT? '
GETCHAR
TOTAL=UPPER(RESULT)
IF TOTAL>SPX THEN DO;TT 'N1CAYOU CANNOT HAVE THAT MANY SPELLS AT THIS LEVEL!W2';SIGNAL MAGICMAIN;END
IF TOTAL<1 THEN DO;TT 'N1CAYOU CANNOT LEARN LESS THAN 1 OF ANYTHING!W2';SIGNAL MAGICMAIN;END
SPX=SPX-TOTAL
AMOUNT=0
SB='W'
IF EXISTS(BPATH||NAME)=1 THEN SB='A'
CALL OPEN(1,BPATH||NAME,SB)
CALL WRITELN(1,CSP.PXS)
CALL WRITELN(1,TOTAL)
CALL WRITELN(1,AMOUNT)
CALL CLOSE(1)
SIGNAL MAGICMAIN
PRIESTPICK:
IF ST.4>0 & L1=DON THEN DO;LDV=1;SPXP=ST.81;CALL OPEN(1,SKPATH||'RELI1','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL PRIESTMAIN;END
IF ST.4>2 & L2=DON THEN DO;LDV=2;SPXP=ST.82;CALL OPEN(1,SKPATH||'RELI2','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL PRIESTMAIN;END
IF ST.4>4 & L3=DON THEN DO;LDV=3;SPXP=ST.83;CALL OPEN(1,SKPATH||'RELI3','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL PRIESTMAIN;END
IF ST.4>6 & L4=DON THEN DO;LDV=4;SPXP=ST.84;CALL OPEN(1,SKPATH||'RELI4','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL PRIESTMAIN;END
IF ST.4>8 & L5=DON THEN DO;LDV=5;SPXP=ST.85;CALL OPEN(1,SKPATH||'RELI5','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL PRIESTMAIN;END
IF ST.4>10 & L6=DON THEN DO;LDV=6;SPXP=ST.86;CALL OPEN(1,SKPATH||'RELI6','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL PRIESTMAIN;END
IF ST.4>12 & L7=DON THEN DO;LDV=7;SPXP=ST.87;CALL OPEN(1,SKPATH||'RELI7','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL PRIESTMAIN;END
IF ST.4>14 & L8=DON THEN DO;LDV=8;SPXP=ST.88;CALL OPEN(1,SKPATH||'RELI8','R');DO I=1 TO 6;CSP.I=READLN(1);END;CALL CLOSE(1);SIGNAL PRIESTMAIN;END
TT 'N1CATHAT WAS THE HIGHEST LEVEL OF PRIEST SPELL YOU CAN CAST.N1DON''T FORGET YOU MUST C9REST CATO RETAIN THE KNOWLEDGE!!!W2'
DO;MAIN=YES;SIGNAL SHUFFLE;END
PRIESTMAIN:
IF SPXP=0 & LDV=1 THEN DO;L1=DONE;SIGNAL PRIESTPICK;END
IF SPXP=0 & LDV=2 THEN DO;L2=DONE;SIGNAL PRIESTPICK;END
IF SPXP=0 & LDV=3 THEN DO;L3=DONE;SIGNAL PRIESTPICK;END
IF SPXP=0 & LDV=4 THEN DO;L4=DONE;SIGNAL PRIESTPICK;END
IF SPXP=0 & LDV=5 THEN DO;L5=DONE;SIGNAL PRIESTPICK;END
IF SPXP=0 & LDV=6 THEN DO;L6=DONE;SIGNAL PRIESTPICK;END
IF SPXP=0 & LDV=7 THEN DO;L7=DONE;SIGNAL PRIESTPICK;END
IF SPXP=0 & LDV=8 THEN DO;L8=DONE;SIGNAL PRIESTPICK;END
TT 'F1N2CAPRIEST SPELL CHOICES FOR LEVELCF' LDV 'CASPELLS'
TT 'N1CB1. CA'CSP.1
TT 'CB2. CA'CSP.2
TT 'CB3. CA'CSP.3
IF CSP.4~=' ' THEN TT 'CB4. CA'CSP.4
IF CSP.5~=' ' THEN TT 'CB5. CA'CSP.5
IF CSP.6~=' ' THEN TT 'CB6. CA'CSP.6
TT 'N1CBSPELLS AVAILABLE:CF' SPXP
SX 'N2CESELECT THE C9# CEOF THE SPELL YOU WISH TO LEARN '
GETCHAR
PXS=UPPER(RESULT)
IF PXS=p THEN SIGNAL QUIT
IF PXS<1 | PXS>6 THEN SIGNAL PRIESTMAIN
IF PXS>0 | PXS<7 THEN SIGNAL PADDIT
SIGNAL PRIESTMAIN
PADDIT:
SX 'N1CAAND HOW MANY TIMES DO YOU WISH TO RETAIN IT? '
GETCHAR
TOTAL=UPPER(RESULT)
IF TOTAL>SPXP THEN DO;TT 'N1CAYOU CANNOT HAVE THAT MANY SPELLS AT THIS LEVEL!W2';SIGNAL PRIESTMAIN;END
IF TOTAL<1 THEN DO;TT 'N1CAYOU CANNOT LEARN LESS THAN 1 OF ANYTHING!W2';SIGNAL PRIESTMAIN;END
SPXP=SPXP-TOTAL
AMOUNT=0
SB='W'
IF EXISTS(BPATH||NAME)=1 THEN SB='A'
CALL OPEN(1,BPATH||NAME,SB)
CALL WRITELN(1,CSP.PXS)
CALL WRITELN(1,TOTAL)
CALL WRITELN(1,AMOUNT)
CALL CLOSE(1)
SIGNAL PRIESTMAIN
ARMORS:
IF MOGARM=YES THEN DO;MOGARM=NO;SIGNAL MAGICSHOP;END
BUFFERFLUSH
IF ST.3=MONK THEN DO;TT 'N1CEMONKS CANNOT WEAR ANY ARMOR AT ALL!W2';MAIN=YES;SIGNAL MAIN;END
SFI MPATH||'ARMOR'
TT 'N1 CBGOLD:CF' ST.170
QUERY 'N1CEWHAT SUIT OF SALAVATION WOULD YOU LIKE?C9 '
AM=UPPER(RESULT)
IF AM=p THEN SIGNAL QUIT
IF AM=' ' THEN DO;MAIN=YES;SIGNAL MAIN;END
IF AM='Q' THEN DO;MAIN=YES;SIGNAL MAIN;END
IF AM<1 | AM>13 THEN DO;TT 'N1CAWHY GOOD SIR THERE IS NO SUCH ARMOR AVAILABLE...W2';SIGNAL ARMORS;END
CALL OPEN(1,APATH||'ARM','R')
DO I=1 TO 13
AMP.I=READLN(1)
END
CALL CLOSE(1)
IF ~EXISTS(APATH||AMP.AM) THEN DO;TT 'C9N1SORRY, I HAVE NONE OF THOSE IN STOCK!W2';SIGNAL ARMORS;END
CALL OPEN(1,APATH||AMP.AM,'R')
DO I=1 TO 5
AMX.I=READLN(1)
END
CALL CLOSE(1)
SIGNAL ARMLIMIT
ARMLIMIT:
IF AM>1 & ST.3=WIZARD THEN SIGNAL NOARM
IF AM>7 & ST.3=NINJA THEN SIGNAL NOARM
IF AM>7 & ST.3=ROGUE THEN SIGNAL NOARM
IF AMX.3>ST.170 THEN DO;TT 'N1CEGET SOME GOLD AND THEN WE''LL TALKW1';SIGNAL ARMORS;END
IF AM>10 & ST.33=TWO HANDED SWORD THEN DO;TT 'N1CAYOU CANNOT CARRY A SHIELD AND A TWO HANDED SWORD!W2';SIGNAL ARMORS;END
IF AM>10 & ST.38~=NONE THEN DO;TT 'N1CAYOU CANNOT CARRY A SHIELD AND A MISSILE WEAPON! SORRY!W2';SIGNAL ARMORS;END
IF AM>10 THEN SIGNAL SHIELDS
TT 'N1CF' AMX.1 'CACOSTSCF' AMX.3 'CAGOLD PIECES'
SX 'CEDO YOU WANT IT?C9 [Y/N] '
GETCHAR
HHH=UPPER(RESULT)
IF HHH=p THEN SIGNAL QUIT
IF HHH='N' THEN SIGNAL ARMORS
IF AMX.4+ST.152+ST.151+ST.156>ST.11 THEN SIGNAL TOOHEAVY
ST.170=ST.170-AMX.3
ST.153=AMX.4
ST.31=AMX.1
ST.30=AMX.2
AMHOLD=ST.30-ST.15
ST.32=AMHOLD-ST.129
SIGNAL ARMORS
SHIELDS:
IF AMX.4+ST.151+ST.152+ST.153>ST.11 THEN SIGNAL TOOHEAVY
TT 'N1CF' AMX.1 'CACOSTSCF' AMX.3 'CAGOLD PIECES'
SX 'CEDO YOU WANT IT?C9 [Y/N] '
GETCHAR
HHH=UPPER(RESULT)
IF HHH=p THEN SIGNAL QUIT
IF HHH='N' THEN SIGNAL ARMORS
TT 'N1CATHANKS...W1'
IF AM=11 THEN DO;ST.129=1;ST.32=ST.32-1;ST.156=AMX.4;ST.130=AMX.1;ST.170=ST.170-AMX.3;MAIN=YES;SIGNAL MAIN;END
IF AM=12 THEN DO;ST.129=2;ST.32=ST.32-2;ST.156=AMX.4;ST.130=AMX.1;ST.170=ST.170-AMX.3;MAIN=YES;SIGNAL MAIN;END
IF AM=13 THEN DO;ST.129=3;ST.32=ST.32-3;ST.156=AMX.4;ST.130=AMX.1;ST.170=ST.170-AMX.3;MAIN=YES;SIGNAL MAIN;END
SIGNAL ARMORS
TOOHEAVY:
TT 'C9YIKES! YOU HAD BETTER TRY PUMPING IRON IF YOU EXPECT TO WEAR THAT!!W2'
SIGNAL ARMORS
NOARM:
TT 'N1CASORRY BUT ACF' ST.3 'CACANNOT USECF' AMX.1 'CAARMORW2'
SIGNAL ARMORS
WEAPONS:
IF MOGWEP=YES THEN DO;MOGWEP=NO;SIGNAL MAGICSHOP;END
BUFFERFLUSH
IF ST.3=MONK THEN DO;TT 'N1CEMONKS ARE ONLY ALLOWED TO USE THEIR HANDS AS WEAPONS!W2';MAIN=YES;SIGNAL MAIN;END
SFI MPATH||'WEAPONS'
TT ' CBGOLD:CF' ST.170
QUERY 'CEWHAT INSTRUMENT OF PAIN IS YOUR PLEASURE?C9 '
WX=UPPER(RESULT)
IF WX=p THEN SIGNAL QUIT
IF WX=' ' THEN SIGNAL MAIN
IF WX='Q' THEN DO;MAIN=YES;SIGNAL MAIN;END
IF WX<1 | WX>35 THEN DO;TT 'N1C9PERHAPS GLASSES WOULD BE MORE SUITED FOR YOU...W2';SIGNAL WEAPONS;END
IF WX>33 THEN SIGNAL AMMO
CALL OPEN(1,WPATH||'WEP','R')
DO I=1 TO 33
WPP.I=READLN(1)
END
CALL CLOSE(1)
IF ~EXISTS(WPATH||WPP.WX) THEN DO;TT 'C9N1SORRY, I HAVE NONE OF THOSE IN STOCK!W2';SIGNAL WEAPONS;END
CALL OPEN(1,WPATH||WPP.WX,'R')
DO I=1 TO 9
WPX.I=READLN(1)
END
CALL CLOSE(1)
SIGNAL CLASSLIMIT
CLASSLIMIT:
IF ST.98=BOTH & WPX.9=MISSILE THEN SIGNAL SORRYGUY
IF ST.98=BOTH & WPX.9=BLADE THEN SIGNAL SORRYGUY
IF ST.3=WITCH & WPX.9=MISSILE THEN SIGNAL SORRYGUY
IF ST.3=PRIESTESS & WPX.9=MISSILE THEN SIGNAL SORRYGUY
IF ST.3=PRIESTESS & WPX.9=BLADE THEN SIGNAL SORRYGUY
IF WPP.WX=TWOHANDEDSWORD & ST.129>0 THEN DO;TT 'N1CAYOU CANNOT USE THAT WEAPON WHILE CARRYING A SHIELD!W2';SIGNAL WEAPONS;END
IF WPX.9=MISSILE & ST.129>0 THEN DO;TT 'N1CAYOU CANNOT USE A MISSILE WEAPON AND A SHIELD! SORRY!W2';SIGNAL WEAPONS;END
IF WPX.8+ST.151+ST.153+ST.156>ST.11 THEN DO;TT 'N1CAYOU CANNOT HANDLE THE ADDITIONAL WEIGHT! SORRY...W2';SIGNAL WEAPONS;END
IF ST.3=WIZARD & WPX.9=MISSILE THEN SIGNAL SORRYGUY
IF ST.3=PRIEST & WPX.9=MISSILE THEN SIGNAL SORRYGUY
IF ST.3=PRIEST & WPX.9=BLADE THEN SIGNAL SORRYGUY
IF ST.3=NINJA & WPX.9=POLE THEN SIGNAL SORRYGUY
IF ST.3=ROGUE & WPX.9=POLE THEN SIGNAL SORRYGUY
IF ST.170<WPX.5 THEN SIGNAL CHEAPO
TT 'N1CAA FINE CHOICE SIR! AND IT ONLY COSTSCF' WPX.5 'CBGOLDCA PIECES'
SX 'CEWILL YOU TAKE IT? '
GETCHAR
WA=UPPER(RESULT)
IF WA=p THEN SIGNAL QUIT
IF WA='Y' THEN SIGNAL WEAPONDO
SIGNAL WEAPONS
WEAPONDO:
ST.170=ST.170-WPX.5
IF WPX.9=PROJECTILE THEN SIGNAL HOWMANY
IF WPX.9~=MISSILE THEN DO;ST.33=WPX.1;ST.34=WPX.6;ST.35=WPX.7;ST.36=WPX.2;ST.37=WPX.3;ST.152=WPX.8;SIGNAL WEAPONS;END
IF WPX.8+ST.152+ST.153+ST.156>ST.11 THEN DO;TT 'N1CAYOU CANNOT HANDLE THE ADDITIONAL WEIGHT! SORRY...W2';SIGNAL WEAPONS;END
IF WPX.9=MISSILE THEN DO;ST.38=WPX.1;ST.39=WPX.6;ST.40=WPX.7;ST.41=WPX.2;ST.42=WPX.3;ST.43=WPX.4;ST.153=WPX.8;SIGNAL MISSILEDO;END
SIGNAL WEAPONS
PRODO:
ST.38=WPX.1
ST.39=WPX.6
ST.40=WPX.7
ST.41=WPX.2
ST.42=WPX.3
ST.43=WPX.4
ST.76=WPX.1
SIGNAL WEAPONS
HOWMANY:
QUERY 'N1CAHOW MANY OF THESE LITTLE GEMS WOULD YOU LIKE? '
AXS=UPPER(RESULT)
SPEND=AXS*WPX.5
IF AXS=p THEN SIGNAL QUIT
IF AXS=' ' THEN SIGNAL WEAPONS
IF AXS='Q' THEN SIGNAL WEAPONS
IF AXS<1 THEN SIGNAL WEAPONS
IF SPEND>ST.170 THEN DO;TT 'C9YOU CAN''T AFFORD THAT MANY!!W1'SIGNAL HOWMANY;END
ST.170=ST.170-SPEND
ST.77=AXS
SIGNAL PRODO
MISSILEDO:
ST.76=BOLTS
IF UPPER(ST.38)=SLING THEN ST.76=ROCKS
IF UPPER(ST.38)~=CROSSBOW THEN ST.76=ARROWS
SIGNAL WEAPONS
CHEAPO:
TT 'N1C9YOU CAN''T AFFORD SUCH WEAPONS!W1'
SIGNAL WEAPONS
SORRYGUY:
IF FUNDS=YES | FUNDZ=YES THEN DO;TT TT 'N1C9ACF' ST.3 'C9CAN NOT USE ACF' MW.9 'C9!W2';SIGNAL SHUFFLE;END
TT 'N1C9ACF' ST.3 'C9CAN NOT USE ACF' WPX.9 'C9WEAPON!W2'
SIGNAL WEAPONS
AMMO:
QUERY 'CEHOW MANY DO YOU WANT?CD '
AMN=UPPER(RESULT)
IF AMN=p THEN SIGNAL QUIT
IF AMN='Q' THEN SIGNAL WEAPONS
IF AMN=' ' THEN SIGNAL WEAPONS
IF AMN>ST.170 THEN DO;TT 'CAYOU DO NOT HAVE ENOUGH GOLD TO BUY THAT MANYCF' ST.76'CC!W1';SIGNAL AMMO;END
IF AMN<1 THEN SIGNAL AMMO
ST.170=ST.170-AMN
ST.77=ST.77+AMN
SIGNAL WEAPONS
HEALER:
SFI MPATH||'HEALER'
TT 'N1CCYOUR STATUS:'
TT 'N1CURRENT HEALTH:CF' ST.26
TT 'CCMAXIMUM HEALTH:CF' ST.27
TT 'CCGOLD PIECES :CF' ST.170
SX 'N1CDSO WHAT CAN WE DO FOR YOU,CF' ST.1 'CD? '
GETCHAR
HLR=UPPER(RESULT)
IF HLR=p THEN SIGNAL QUIT
IF HLR='Q' THEN DO;MAIN=YES;SIGNAL MAIN;END
IF HLR='A' THEN SIGNAL HEALALL /* SOMETHING WRONG HERE */
IF HLR='H' THEN SIGNAL POINTS
IF HLR='P' & ST.50=POISONED THEN SIGNAL PHEAL
SIGNAL HEALER
PHEAL:
IF ST.170>200 THEN DO;TT 'N1S1CCLET US TAKE AWAY THAT NASTY POISON FROM YOUR SYSTEM.S0W1N1C9DONE!W1';ST.50=OKAY;SIGNAL HEALER;END
TT 'N1CASORRY, YOU DO NOT HAVE ENOUGH MONEY.W2'
SIGNAL HEALER
POINTS:
IF ST.26=ST.27 THEN DO;TT 'N1C9YOU DO NOT NEED ANY HEALING...W1';SIGNAL HEALER;END
QUERY 'N1CEAND HOW MANY POINTS DO YOU WISH US TO HEAL? '
PTSN=UPPER(RESULT)
IF PTSN=p THEN SIGNAL QUIT
NPTS=ST.27-ST.26
IF PTSN>NPTS THEN DO;TT 'N1CAYOU MAY NOT EXCEED YOUR MAXIMUM!W1';SIGNAL HEALER;END
IF PTSN<1 THEN DO;TT 'N1CAWE ARE NOT IN THE HABIT OF BUYING HEALTH FROM CLIENTS!W1';SIGNAL HEALER;END
HCOST=PTSN*5
IF HCOST>ST.170 THEN DO;TT 'N1CASORRY, BUT YOU DO NOT HAVE THE FUNDS FOR THIS...W2';SIGNAL HEALER;END
TT 'CDN1LET US HEAL YOU THEN,CF' ST.1 'W1'
ST.26=ST.26+PTSN
ST.170=ST.170-HCOST
DO;MAIN=YES;SIGNAL MAIN;END
HEALALL:
BTSN=ST.27-ST.26
HCOST=BTSN*5
IF ST.26=ST.27 THEN DO;TT 'N1C9YOU DO NOT NEED HEALING...W1';SIGNAL HEALER;END
IF HCOST>ST.170 THEN DO;TT 'N1CASORRY, BUT YOU DO NOT HAVE THE FUNDS FOR THIS...W2';SIGNAL HEALER;END
TT 'CDN1LET US HEAL YOU THEN,CF' ST.1 'W1'
ST.26=ST.27
ST.170=ST.170-HCOST
DO;MAIN=YES;SIGNAL MAIN;END
ARENA:
BUFFERFLUSH
IF INVIS=YES THEN DO;TT 'F1N1C9VOLUNTARILY ENTERING THE ARENA MAKES YOU VISIBLE!!!W2';END
BZZ=ARENA
SFI SPATH||'ARENA'
SX ' CAHIT C9Q CAIF YOU ARE TOO FRIGHTENED TO CONTINUE!!! '
GETCHAR
RNWY=UPPER(RESULT)
IF RNWY=p THEN SIGNAL QUIT
IF RNWY='Q' THEN SIGNAL MAIN
SIGNAL MONSTERCALL
MONSTERMAYBE:
MYBE=VRND(1,10)
IF MYBE<6 THEN SIGNAL MONSTERCALL
SIGNAL MAPCALL
MONSTERCALL:
CALL OPEN(1,EPATH||'MCOUNT','R')
DO I=1 TO 50
XG.I=READLN(1)
END
CALL CLOSE(1)
TEMPLEVEL=ST.4
HACK=VRND(1,20)
IF HACK<4 THEN TEMPLEVEL=TEMPLEVEL-1
IF HACK>17 THEN TEMPLEVEL=TEMPLEVEL+1
IF TEMPLEVEL<1 THEN TEMPLEVEL=1
MOVES=0
IF INVIS=YES THEN DO;TT 'N1CAMONSTERS CANNOT FIGHT WHAT THEY CANNOT SEE!W2';SIGNAL SHUFFLE;END
IF TEMPLEVEL=1 THEN DO;MON=MON1;MXM=VRND(1,XG.1);END
IF TEMPLEVEL=2 THEN DO;MON=MON2;MXM=VRND(1,XG.2);END
IF TEMPLEVEL=3 THEN DO;MON=MON3;MXM=VRND(1,XG.3);END
IF TEMPLEVEL=4 THEN DO;MON=MON4;MXM=VRND(1,XG.4);END
IF TEMPLEVEL=5 THEN DO;MON=MON5;MXM=VRND(1,XG.5);END
IF TEMPLEVEL=6 THEN DO;MON=MON6;MXM=VRND(1,XG.6);END
IF TEMPLEVEL=7 THEN DO;MON=MON7;MXM=VRND(1,XG.7);END
IF TEMPLEVEL=8 THEN DO;MON=MON8;MXM=VRND(1,XG.8);END
IF TEMPLEVEL=9 THEN DO;MON=MON9;MXM=VRND(1,XG.9);END
IF TEMPLEVEL=10 THEN DO;MON=MON10;MXM=VRND(1,XG.10);END
IF TEMPLEVEL=11 THEN DO;MON=MON11;MXM=VRND(1,XG.11);END
IF TEMPLEVEL=12 THEN DO;MON=MON12;MXM=VRND(1,XG.12);END
IF TEMPLEVEL=13 THEN DO;MON=MON13;MXM=VRND(1,XG.13);END
IF TEMPLEVEL=14 THEN DO;MON=MON14;MXM=VRND(1,XG.14);END
IF TEMPLEVEL=15 THEN DO;MON=MON15;MXM=VRND(1,XG.15);END
IF TEMPLEVEL=16 THEN DO;MON=MON16;MXM=VRND(1,XG.16);END
IF TEMPLEVEL>16 THEN DO;MON=MON17;MXM=VRND(1,XG.17);END
IF MAP=13 | MAP=14 | MAP=15 | MAP=17 | MAP=18 | MAP=19 | MAP=23 | MAP=24 | MAP=25 THEN DO;MON=MON5A;MXM=VRND(1,XG.22);END
IF MIPS.LOC=FO THEN DO;MON=MON1A;MXM=VRND(1,XG.18);END
IF MIPS.LOC=RO THEN DO;MON=MON2A;MXM=VRND(1,XG.19);END
IF MIPS.LOC=DE THEN DO;MON=MON3A;MXM=VRND(1,XG.20);END
IF MIPS.LOC=SW THEN DO;MON=MON4A;MXM=VRND(1,XG.21);END
IF MAP=16 THEN DO;MON=MON6A;MXM=VRND(1,XG.23);END
IF MAP=20 THEN DO;MON=MON7A;MXM=VRND(1,XG.24);END
IF MAP=21 | MAP=22 THEN DO;MON=MON8A;MXM=VRND(1,XG.25);END
IF MAP=27 | MAP=28 | MAP=29 | MAP=30 THEN DO;MON=MON9AB;MXM=VRND(1,10);END
IF MAP=6 | MAP=35 | MAP=31 | MAP=32 | MAP=33 | MAP=34 THEN DO;MON=MON9A;MXM=VRND(1,XG.26);END
IF ST.162>1 & TEMPLEVEL<10 THEN DO;MON=MON26;MXM=VRND(1,XG.27);END
IF ST.162>1 & TEMPLEVEL>9 THEN DO;MON=MON27;MXM=VRND(1,XG.28);END
IF TEMPLEVEL<10 & MIPS.LOC=OC THEN DO;MON=MON28;MXM=VRND(1,XG.29);END
IF TEMPLEVEL>9 & MIPS.LOC=OC THEN DO;MON=MON29;MXM=VRND(1,XG.30);END
SIGNAL LOADMON
LOADMON:
CALL OPEN(1,EPATH||MON,'R')
DO I=1 TO 25
MNX.I=READLN(1)
END
CALL CLOSE(1)
SIGNAL LOADMON1
LOADMON1:
ENIGMA=UPPER(MNX.MXM)
IF ENIGMA='' THEN SIGNAL MONSTERCALL
IF EXISTS(EPATH||ENIGMA) THEN SIGNAL LOADMON2
SIGNAL MONSTERCALL
LOADMON2:
YIP=NO
CALL OPEN(1,EPATH||ENIGMA,'R')
DO I=1 TO 23
MS.I=READLN(1)
END
CALL CLOSE(1)
BUFFERFLUSH
MM1=' '
MM2=' '
MM3=' '
MM4=' '
MM5=' '
MM6=' '
MM7=' '
MM8=' '
MM9=' '
MM10=' '
MM11=' ' /* HIT POINTS */
MM12=' '
MM13=' '
MM14=' '
MM15=' '
MM16=' '
MM17=' '
MM18=' '
MM19=' '
MM20=' '
MONUM=VRND(MS.6,MS.7)
IF MONUM>0 THEN DO;MM1=UPPER(MS.1);MM11=VRND(MS.8,MS.9);END
IF MONUM>1 THEN DO;MM2=UPPER(MS.1);MM12=VRND(MS.8,MS.9);END
IF MONUM>2 THEN DO;MM3=UPPER(MS.1);MM13=VRND(MS.8,MS.9);END
IF MONUM>3 THEN DO;MM4=UPPER(MS.1);MM14=VRND(MS.8,MS.9);END
IF MONUM>4 THEN DO;MM5=UPPER(MS.1);MM15=VRND(MS.8,MS.9);END
IF MONUM>5 THEN DO;MM6=UPPER(MS.1);MM16=VRND(MS.8,MS.9);END
IF MONUM>6 THEN DO;MM7=UPPER(MS.1);MM17=VRND(MS.8,MS.9);END
IF MONUM>7 THEN DO;MM8=UPPER(MS.1);MM18=VRND(MS.8,MS.9);END
IF MONUM>8 THEN DO;MM9=UPPER(MS.1);MM19=VRND(MS.8,MS.9);END
THIT=ST.44-ST.8
MHIT=ST.45-ST.17
MPD=ST.9-3
IF MPD<0 THEN MPD=0
DIS=VRND(1,9)*10
IF ST.162>0 THEN DIS=VRND(20,40)*10
EXP=0
ATNUM=0
MISNUM=0
MONGO=0
MCASH=MONUM
HELD=0
TEMPAC=ST.32
TEMPDAMPLUS=ST.9
IF UPPER(ST.157)='WAR RING' | UPPER(ST.158)='WAR RING' THEN TEMPDAMPLUS=TEMPDAMPLUS+4
IF UPPER(ST.157)='KNIGHT RING' | UPPER(ST.158)='KNIGHT RING' THEN TEMPDAMPLUS=TEMPDAMPLUS+8
IF UPPER(ST.157)='ARMOR RING' | UPPER(ST.158)='ARMOR RING' THEN TEMPAC=TEMPAC-1
IF UPPER(ST.157)='STONE RING' | UPPER(ST.158)='STONE RING' THEN TEMPAC=TEMPAC-3
PHYSAVE=ST.47
MAGSAVE=ST.49
TEMPAT=ST.169
IF UPPER(ST.157)='RING OF ATTACKS' | UPPER(ST.158)='RING OF ATTACKS' THEN TEMPAT=TEMPAT+2
TEMPMOVE=ST.16
IF UPPER(ST.157)='RING OF SPEED' | UPPER(ST.158)='RING OF SPEED' THEN TEMPMOVE=TEMPMOVE+6
MOVP=TEMPMOVE
TEMPTHACO=THIT
IF UPPER(ST.157)='RING OF ACCURACY' | UPPER(ST.158)='RING OF ACCURACY' THEN TEMPTHACO=TEMPTHACO+2
MISDAMPLUS=TEMPDAMPLUS-4
IF MISDAMPLUS>0 THEN MISDAMPLUS=0
TEMPMHACO=MHIT
RUNT=0
SPELL1=0
SPELL2=0
SPELL3=0
MSAVE=0
EEXP=0
EXP=0
IF MAP<13 & ST.117~=NONE THEN POSSY=YES
IF MAP=0 | MAP>12 THEN POSSY=NO
IF POSSY=YES THEN DO;TEMPMOVE=ST.118/10;END
TT 'F1'
IF ST.127=ON & EXISTS(SPATH||MS.3) THEN DO;YIP=YES;SFI SPATH||MS.3;END
IF ST.127=ON & UPPER(MS.20)=UNDEAD THEN DO;YIP=YES;SFI SPATH||'UNDEFAULT';END
IF ST.127=ON & UPPER(MS.20)=DEMON THEN DO;YIP=YES;SFI SPATH||'DEMONFAULT';END
IF ST.127=ON & ST.162>99 THEN DO;YIP=YES;SFI SPATH||'SKYDEFAULT';END
IF ST.127=ON & YIP~=YES THEN DO;YIP=NO;SFI SPATH||'MONDEFAULT';END
TT 'N2S1CB' MS.2 'S0W1'
TT 'CAYOU SEECF' MONUM 'CAOF THEM CLOSING ATCF' DIS 'CAFEET!W2'
QUERY 'N1CEWHICH SPELL C9# CEWOULD YOU LIKE TO CAST?C9 [Q=QUIT]CF '
SPLN=UPPER(RESULT)
IF SPLN=p THEN SIGNAL QUIT
IF SPLN='Q' THEN SIGNAL COMBATPREP
IF SPLN=' ' THEN SIGNAL COMBATPREP
IF SPNAME.SPLN=' ' THEN DO;TT 'N1C9YOU HAVE NOT MEMORIZED THAT MANY SPELLS'ST.163;SIGNAL SPELLVIEW;END
IF SPAMOUNT.SPLN=0 THEN DO;TT 'N1CEYOU HAVE NO MORE OF THIS SPELL IN YOUR MEMORY!'ST.163;SIGNAL SPELLVIEW;END
SPNME=SPNAME.SPLN
CMBTER=NO
IF EXISTS(SKPATH||SPNME) THEN DO;SPLD=YES;SIGNAL CALLSPELL;END
SIGNAL SPELLVIEW
CALLSPELL:
CALL OPEN(1,SKPATH||SPNME,'R')
DO I=1 TO 9
SP.I=READLN(1)
END
CALL CLOSE(1)
IF UPPER(SP.3)~=COMBAT THEN DO;TT 'N1CATHAT IS NOT A COMBAT SPELL!'ST.163;SIGNAL SPELLVIEW;END
IF CMBTER=NO THEN SPAMOUNT.SPLN=SPAMOUNT.SPLN-1
IF UPPER(SP.7)=CHARM THEN SIGNAL CHARM
IF UPPER(SP.7)=DEFENSE THEN SIGNAL DEFENSE
IF UPPER(SP.7)=BONUS THEN SIGNAL BONUS
HITNUM=SP.9
IF HITNUM>MONUM THEN HITNUM=MONUM
SIGNAL MONCHOICE
BONUS:
CMBTER=NO
SPELL3=SP.8*ST.4
IF UPPER(SP.6)=ATTN THEN TEMPAT=TEMPAT+SP.5
IF UPPER(SP.6)=DAM THEN TEMPDAMPLUS=TEMPDAMPLUS+SP.5
IF UPPER(SP.6)=MOVE THEN TEMMOVE=TEMPMOVE+SP.5
IF UPPER(SP.6)=THACO THEN TEMTHACO=TEMPTHACO-SP.5
IF UPPER(SP.6)=MHACO THEN TEMPMHACO=TEMPMHACO-SP.5
IF UPPER(SP.6)=ALL THEN DO;TEMPAT=TEMPAT+SP.5;TEMPDAMPLUS=TEMPDAMPLUS+SP.5;TEMPMOVE=TEMPMOVE+SP.5;TEMPTHACO=TEMPTHACO-SP.5;TEMPMHACO=TEMPMHACO-SP.5;END
TT 'CAYOU CAST ACF' SP.1 'CAAND BEGIN TO FEEL SUPERIOR!'ST.163
DO;MONNY=YES;SIGNAL COMBATPREP;END
DEFENSE:
CMBTER=NO
SPELL2=SP.8*ST.4
IF UPPER(SP.6)=AC THEN TEMPAC=TEMPAC-SP.5
IF UPPER(SP.6)=PHYSAVE THEN PHYSAVE=PHYSAVE-SP.5
IF UPPER(SP.6)=MAGSAVE THEN MAGSAVE=MAGSAVE-SP.5
IF UPPER(SP.6)=ALL THEN DO;TEMPAC=TEMPAC-SP.5;PHYSAVE=PHYSAVE-SP.5;MAGSAVE=MAGSAVE-SP.5;END
TT 'CAN1YOU CASTCF' SP.1 'CAON YOURSELF AND FEEL SAFER!'ST.163
IF TEMPAC<-10 THEN TEMPAC=-10
DO;MONNY=YES;SIGNAL COMBATPREP;END
CHARM:
CMBTER=NO
SPELL1=SP.8*ST.4
FECTD=SP.9
IF FECTD>MONUM THEN FECTD=MONUM
SIGNAL MONSAVE
MONSAVE:
MOSAV=MS.15
MOSAVE2:
IF UPPER(SP.1)=SLEEP THEN HEX=ASLEEP
IF UPPER(SP.1)=CHARM THEN HEX=CHARMED
IF UPPER(SP.1)=PARALYZE THEN HEX=PARALYZED
IF UPPER(SP.1)=GAZE THEN HEX=HYPNOTIZED
IF UPPER(SP.1)=WEB THEN HEX=STUCK
IF UPPER(SP.1)=BEDAZZLE THEN HEX=BEDAZZLED
SVTRY=VRND(1,20)
IF MM1~=' ' & SVTRY<MOSAV THEN DO;MSAVE=MSAVE+1;OLDM=MM1;MM1=HEX;TT 'CF'UPPER(MS.1)' C9#1CA ISCF' HEX''ST.163;END
IF MSAVE=FECTD THEN SIGNAL MONTURN
SVTRY=VRND(1,20)
IF MM2~=' ' & SVTRY<MOSAV THEN DO;MSAVE=MSAVE+1;OLDM=MM2;MM2=HEX;TT 'CF'UPPER(MS.1)' C9#2CA ISCF' HEX''ST.163;END
IF MSAVE=FECTD THEN SIGNAL MONTURN
SVTRY=VRND(1,20)
IF MM3~=' ' & SVTRY<MOSAV THEN DO;MSAVE=MSAVE+1;OLDM=MM3;MM3=HEX;TT 'CF'UPPER(MS.1)' C9#3CA ISCF' HEX''ST.163;END
IF MSAVE=FECTD THEN SIGNAL MONTURN
SVTRY=VRND(1,20)
IF MM4~=' ' & SVTRY<MOSAV THEN DO;MSAVE=MSAVE+1;OLDM=MM4;MM4=HEX;TT 'CF'UPPER(MS.1)' C9#4CA ISCF' HEX''ST.163;END
IF MSAVE=FECTD THEN SIGNAL MONTURN
SVTRY=VRND(1,20)
IF MM5~=' ' & SVTRY<MOSAV THEN DO;MSAVE=MSAVE+1;OLDM=MM5;MM5=HEX;TT 'CF'UPPER(MS.1)' C9#5CA ISCF' HEX''ST.163;END
IF MSAVE=FECTD THEN SIGNAL MONTURN
SVTRY=VRND(1,20)
IF MM6~=' ' & SVTRY<MOSAV THEN DO;MSAVE=MSAVE+1;OLDM=MM6;MM6=HEX;TT 'CF'UPPER(MS.1)' C9#6CA ISCF' HEX''ST.163;END
IF MSAVE=FECTD THEN SIGNAL MONTURN
SVTRY=VRND(1,20)
IF MM7~=' ' & SVTRY<MOSAV THEN DO;MSAVE=MSAVE+1;OLDM=MM7;MM7=HEX;TT 'CF'UPPER(MS.1)' C9#7CA ISCF' HEX''ST.163;END
IF MSAVE=FECTD THEN SIGNAL MONTURN
SVTRY=VRND(1,20)
IF MM8~=' ' & SVTRY<MOSAV THEN DO;MSAVE=MSAVE+1;OLDM=MM8;MM8=HEX;TT 'CF'UPPER(MS.1)' C9#8CA ISCF' HEX''ST.163;END
IF MSAVE=FECTD THEN SIGNAL MONTURN
SVTRY=VRND(1,20)
IF MM9~=' ' & SVTRY<MOSAV THEN DO;MSAVE=MSAVE+1;OLDM=MM9;MM9=HEX;TT 'CF'UPPER(MS.1)' C9#9CA ISCF' HEX''ST.163;END
IF MSAVE=FECTD THEN SIGNAL MONTURN
SIGNAL MONTURN
ENDED:
IF MM1~=' ' THEN MM1=OLDM
IF MM2~=' ' THEN MM2=OLDM
IF MM3~=' ' THEN MM3=OLDM
IF MM4~=' ' THEN MM4=OLDM
IF MM5~=' ' THEN MM5=OLDM
IF MM6~=' ' THEN MM6=OLDM
IF MM7~=' ' THEN MM7=OLDM
IF MM8~=' ' THEN MM8=OLDM
IF MM9~=' ' THEN MM9=OLDM
MESS1= 'CAYOUR SPELL HAS WORN OFF'ST.163
SIGNAL COMBAT
ENDED1:
TEMPAC=ST.32
PHYSAVE=ST.47
MAGSAVE=ST.49
MESS1= 'CAYOUR SPELL HAS WORN OFF AND YOU HAVE RETURNED TO NORMAL'ST.163
SIGNAL COMBAT
ENDED2:
TEMPAT=ST.169
TEMPDAMPLUS=ST.9
TEMPMOVE=ST.16
TEMPTHACO=THIT
TEMPMHACO=MHIT
MESS1= 'YOUR SPELL HAS WORN OFF. YOU ARE NO LONGER A SUPERMAN...'ST.163
SIGNAL COMBAT
MONCHOICE:
CMBTER=NO
TT 'F1N2C9YOU CAST A CF'SPNME 'C9AT THECF' UPPER(MS.1)'SC9!'
IF HITNUM=0 THEN SIGNAL MONTURN
IF HITNUM>0 THEN SIGNAL MND1
MND1:
IF MM1='' THEN SIGNAL MND2
DAM1=VRND(SP.5,SP.6)
DAM2=VRND(SP.5,SP.6)
DAM3=VRND(SP.5,SP.6)
DAM4=VRND(SP.5,SP.6)
DAM5=DAM4+DAM3+DAM2+DAM1
DAM6=DAM5/4
PARSE VAR DAM6 DAM7'.'REMD
DAM=DAM7*ST.4
MONSAV=MS.15
DAM8=DAM/2
PARSE VAR DAM8 NDAM"."REMDS
SVTRY=VRND(1,20)+1
IF SVTRY<=MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#1 CAFAILS HIS SAVE & TAKESCB' DAM'CA POINTS OF C9FULLCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM11=MM11-DAM;END
IF SVTRY>MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#1 CAMAKES HIS SAVE & TAKESCB' NDAM'CA POINTS OF CFHALFCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM11=MM11-NDAM;END
IF MM11<1 THEN DO;EXP=EXP+MS.16;TT 'C9S1'MS.21 'S0';MONUM=MONUM-1;MM1=' ';END
IF HITNUM>0 THEN SIGNAL MND2
DO;MONNY=YES;SIGNAL COMBATPREP;END
MND2:
IF MM2='' THEN SIGNAL MND3
DAM1=VRND(SP.5,SP.6)
DAM2=VRND(SP.5,SP.6)
DAM3=VRND(SP.5,SP.6)
DAM4=VRND(SP.5,SP.6)
DAM5=DAM4+DAM3+DAM2+DAM1
DAM6=DAM5/4
PARSE VAR DAM6 DAM7'.'REMD
DAM=DAM7*ST.4
MONSAV=MS.15
DAM8=DAM/2
PARSE VAR DAM8 NDAM"."REMDS
SVTRY=VRND(1,20)+1
IF SVTRY<=MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#2 CAFAILS HIS SAVE & TAKESCB' DAM'CA POINTS OF C9FULLCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM12=MM12-DAM;END
IF SVTRY>MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#2 CAMAKES HIS SAVE & TAKESCB' NDAM'CA POINTS OF CFHALFCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM12=MM12-NDAM;END
IF MM12<1 THEN DO;EXP=EXP+MS.16;TT 'C9S1'MS.21 'S0';MONUM=MONUM-1;MM2=' ';END
IF HITNUM>0 THEN SIGNAL MND3
DO;MONNY=YES;SIGNAL COMBATPREP;END
MND3:
IF MM3=' ' THEN SIGNAL MND4
DAM1=VRND(SP.5,SP.6)
DAM2=VRND(SP.5,SP.6)
DAM3=VRND(SP.5,SP.6)
DAM4=VRND(SP.5,SP.6)
DAM5=DAM4+DAM3+DAM2+DAM1
DAM6=DAM5/4
PARSE VAR DAM6 DAM7'.'REMD
DAM=DAM7*ST.4
MONSAV=MS.15
DAM8=DAM/2
PARSE VAR DAM8 NDAM"."REMDS
SVTRY=VRND(1,20)+1
IF SVTRY<=MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#3 CAFAILS HIS SAVE & TAKESCB' DAM'CA POINTS OF C9FULLCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM13=MM13-DAM;END
IF SVTRY>MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#3 CAMAKES HIS SAVE & TAKESCB' NDAM'CA POINTS OF CFHALFCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM13=MM13-NDAM;END
IF MM13<1 THEN DO;EXP=EXP+MS.16;TT 'C9S1'MS.21 'S0';MONUM=MONUM-1;MM3=' ';END
IF HITNUM>0 THEN SIGNAL MND4
DO;MONNY=YES;SIGNAL COMBATPREP;END
MND4:
IF MM4=' ' THEN SIGNAL MND5
DAM1=VRND(SP.5,SP.6)
DAM2=VRND(SP.5,SP.6)
DAM3=VRND(SP.5,SP.6)
DAM4=VRND(SP.5,SP.6)
DAM5=DAM4+DAM3+DAM2+DAM1
DAM6=DAM5/4
PARSE VAR DAM6 DAM7'.'REMD
DAM=DAM7*ST.4
MONSAV=MS.15
DAM8=DAM/2
PARSE VAR DAM8 NDAM"."REMDS
SVTRY=VRND(1,20)+1
IF SVTRY<=MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#4 CAFAILS HIS SAVE & TAKESCB' DAM'CA POINTS OF C9FULLCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM14=MM14-DAM;END
IF SVTRY>MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#4 CAMAKES HIS SAVE & TAKESCB' NDAM'CA POINTS OF CFHALFCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM14=MM14-NDAM;END
IF MM14<1 THEN DO;EXP=EXP+MS.16;TT 'C9S1'MS.21 'S0';MONUM=MONUM-1;MM4=' ';END
IF HITNUM>0 THEN SIGNAL MND5
DO;MONNY=YES;SIGNAL COMBATPREP;END
MND5:
IF MM5=' ' THEN SIGNAL MND6
DAM1=VRND(SP.5,SP.6)
DAM2=VRND(SP.5,SP.6)
DAM3=VRND(SP.5,SP.6)
DAM4=VRND(SP.5,SP.6)
DAM5=DAM4+DAM3+DAM2+DAM1
DAM6=DAM5/4
PARSE VAR DAM6 DAM7'.'REMD
DAM=DAM7*ST.4
MONSAV=MS.15
DAM8=DAM/2
PARSE VAR DAM8 NDAM"."REMDS
SVTRY=VRND(1,20)+1
IF SVTRY<=MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#5 CAFAILS HIS SAVE & TAKESCB' DAM'CA POINTS OF C9FULLCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM15=MM15-DAM;END
IF SVTRY>MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#5 CAMAKES HIS SAVE & TAKESCB' NDAM'CA POINTS OF CFHALFCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM15=MM15-NDAM;END
IF MM15<1 THEN DO;EXP=EXP+MS.16;TT 'C9S1'MS.21 'S0';MONUM=MONUM-1;MM5=' ';END
IF HITNUM>0 THEN SIGNAL MND6
DO;MONNY=YES;SIGNAL COMBATPREP;END
MND6:
IF MM6=' ' THEN SIGNAL MND7
DAM1=VRND(SP.5,SP.6)
DAM2=VRND(SP.5,SP.6)
DAM3=VRND(SP.5,SP.6)
DAM4=VRND(SP.5,SP.6)
DAM5=DAM4+DAM3+DAM2+DAM1
DAM6=DAM5/4
PARSE VAR DAM6 DAM7'.'REMD
DAM=DAM7*ST.4
MONSAV=MS.15
DAM8=DAM/2
PARSE VAR DAM8 NDAM"."REMDS
SVTRY=VRND(1,20)+1
IF SVTRY<=MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#6 CAFAILS HIS SAVE & TAKESCB' DAM'CA POINTS OF C9FULLCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM16=MM16-DAM;END
IF SVTRY>MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#6 CAMAKES HIS SAVE & TAKESCB' NDAM'CA POINTS OF CFHALFCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM16=MM16-NDAM;END
IF MM16<1 THEN DO;EXP=EXP+MS.16;TT 'C9S1'MS.21 'S0';MONUM=MONUM-1;MM6=' ';END
IF HITNUM>0 THEN SIGNAL MND7
DO;MONNY=YES;SIGNAL COMBATPREP;END
MND7:
IF MM7=' ' THEN SIGNAL MND8
DAM1=VRND(SP.5,SP.6)
DAM2=VRND(SP.5,SP.6)
DAM3=VRND(SP.5,SP.6)
DAM4=VRND(SP.5,SP.6)
DAM5=DAM4+DAM3+DAM2+DAM1
DAM6=DAM5/4
PARSE VAR DAM6 DAM7'.'REMD
DAM=DAM7*ST.4
MONSAV=MS.15
DAM8=DAM/2
PARSE VAR DAM8 NDAM"."REMDS
SVTRY=VRND(1,20)+1
IF SVTRY<=MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#7 CAFAILS HIS SAVE & TAKESCB' DAM'CA POINTS OF C9FULLCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM17=MM17-DAM;END
IF SVTRY>MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#7 CAMAKES HIS SAVE & TAKESCB' NDAM'CA POINTS OF CFHALFCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM17=MM17-NDAM;END
IF MM17<1 THEN DO;EXP=EXP+MS.16;TT 'C9S1'MS.21 'S0';MONUM=MONUM-1;MM7=' ';END
IF HITNUM>0 THEN SIGNAL MND8
DO;MONNY=YES;SIGNAL COMBATPREP;END
MND8:
IF MM8=' ' THEN SIGNAL MND9
DAM1=VRND(SP.5,SP.6)
DAM2=VRND(SP.5,SP.6)
DAM3=VRND(SP.5,SP.6)
DAM4=VRND(SP.5,SP.6)
DAM5=DAM4+DAM3+DAM2+DAM1
DAM6=DAM5/4
PARSE VAR DAM6 DAM7'.'REMD
DAM=DAM7*ST.4
MONSAV=MS.15
DAM8=DAM/2
PARSE VAR DAM8 NDAM"."REMDS
SVTRY=VRND(1,20)+1
IF SVTRY<=MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#8 CAFAILS HIS SAVE & TAKESCB' DAM'CA POINTS OF C9FULLCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM18=MM18-DAM;END
IF SVTRY>MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#8 CAMAKES HIS SAVE & TAKESCB' NDAM'CA POINTS OF CFHALFCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM18=MM18-NDAM;END
IF MM18<1 THEN DO;EXP=EXP+MS.16;TT 'C9S1'MS.21 'S0';MONUM=MONUM-1;MM8=' ';END
IF HITNUM>0 THEN SIGNAL MND9
DO;MONNY=YES;SIGNAL COMBATPREP;END
MND9:
IF MM9='' THEN SIGNAL COMBATPREP
DAM1=VRND(SP.5,SP.6)
DAM2=VRND(SP.5,SP.6)
DAM3=VRND(SP.5,SP.6)
DAM4=VRND(SP.5,SP.6)
DAM5=DAM4+DAM3+DAM2+DAM1
DAM6=DAM5/4
PARSE VAR DAM6 DAM7'.'REMD
DAM=DAM7*ST.4
MONSAV=MS.15
DAM8=DAM/2
PARSE VAR DAM8 NDAM"."REMDS
SVTRY=VRND(1,20)+1
IF SVTRY<=MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#9 CAFAILS HIS SAVE & TAKESCB' DAM'CA POINTS OF C9FULLCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM19=MM19-DAM;END
IF SVTRY>MONSAV THEN DO;TT 'N1CB'UPPER(MS.1) '#9 CAMAKES HIS SAVE & TAKESCB' NDAM'CA POINTS OF CFHALFCA DAMAGE!'ST.163;HITNUM=HITNUM-1;MM19=MM19-NDAM;END
IF MM19<1 THEN DO;EXP=EXP+MS.16;TT 'C9S1'MS.21 'S0';MONUM=MONUM-1;MM9=' ';END
XPAP=EXP/ST.168
PARSE VAR XPAP SEEXP"."REMDS
EEXP=EEXP+SEEXP
DO;MONNY=YES;SIGNAL COMBATPREP;END
TURNED:
IF TRIED=YES THEN DO;MESS1='YOU CANNOT TURN UNDEAD MORE THAN 1 TIME PER COMBAT!'ST.163;SIGNAL COMBAT;END
IF ST.60=X THEN DO;MESS1='YOU ARE NOT CAPABLE OF THIS MANEUVER!'ST.163;SIGNAL COMBAT;END
IF UPPER(MS.20)=MONSTER | UPPER(MS.20)=NPC THEN DO;MESS1='YOUR OPPONENT IS NOT UNDEAD!'ST.163;SIGNAL COMBAT;END
TRN=VRND(1,20)+1
NUM=VRND(2,6)
IF NUM>MONUM THEN NUM=MONUM
IF ST.4=1 & TRN>ST.63 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=2 & TRN>ST.63 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=3 & TRN>ST.64 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=4 & TRN>ST.64 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=5 & TRN>ST.65 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=6 & TRN>ST.65 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=7 & TRN>ST.66 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=8 & TRN>ST.66 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=9 & TRN>ST.67 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=10 & TRN>ST.67 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=11 & TRN>ST.68 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=12 & TRN>ST.68 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=13 & TRN>ST.68 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=14 & TRN>ST.69 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4=15 & TRN>ST.69 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
IF ST.4>15 & TRN>ST.69 THEN DO;MONUM=MONUM-NUM;SIGNAL TURNTALK;END
TRIED=YES
MESS2='NONE OF YOUR OPPONENTS WERE AFFECTED!'ST.163
SIGNAL MONTURN
TURNTALK:
MESS1=''NUM 'OF THE' UPPER(MS.1)'S RETURN TO WHERE THEY CAME FROM!'ST.163
DEXP=NUM*MS.16
EXP=EXP+DEXP
TRIED=YES
SIGNAL TURNY
FORWARD:
SX 'F0BCAMOVE C9FORWARD CAHOW FAR (1-9)? C9[1=10 FEET]CFC0XXXXXXXXXXXXXXXXXXXXD '
GETCHAR
FORW=RESULT
IF FORW=p THEN SIGNAL QUIT
IF FORW>MOVP THEN DO;MESS1='YOU DO NOT HAVE THAT MANY MOVE POINTS!!'ST.163;SIGNAL COMBAT;END
IF FORW>9 | FORW<1 THEN SIGNAL COMBAT
FORW1=FORW*10
HNOW=DIS-10
IF FORW1>HNOW THEN DO;MESS1='YOU CANNOT MOVE PAST YOUR OPPONENT!!'ST.163;SIGNAL COMBAT;END
MOVP=MOVP-FORW
DIS=DIS-FORW1
IF DIS<10 THEN DIS=10
SIGNAL COMBAT
BACKWARD:
SX 'F0BCAMOVE C9BACKWARDCA HOW FAR (1-9)? C9[1=10 FEET]CFC0XXXXXXXXXXXXXXXXXXXXD '
GETCHAR
FORW=RESULT
IF FORW=p THEN SIGNAL QUIT
IF FORW>MOVP THEN DO;MESS1='YOU DO NOT HAVE THAT MANY MOVE POINTS!!'ST.163;SIGNAL COMBAT;END
IF FORW>9 | FORW<1 THEN SIGNAL COMBAT
MOVP=MOVP-FORW
FORW1=FORW*10
DIS=DIS+FORW1
SIGNAL COMBAT
ATTACK:
FCT=0
FXT=0
IF ATNUM=TEMPAT THEN DO;ATNUM=0;SIGNAL MONTURN;END
IF MOVP<3 THEN DO;MESS1='IT TAKES 3 MOVE POINTS TO ATTACK!'ST.163;SIGNAL COMBAT;END
IF DIS>10 THEN SIGNAL MISTACK
SX 'F0BCBWHICH ENEMY C9#CB WILL YOU ATTACK?C0XXXXXXXXXXXXXXXXXXXXD '
GETCHAR
FCT=UPPER(RESULT)
IF FCT='1' & MM1~=' ' THEN SIGNAL ATTACKED
IF FCT='2' & MM2~=' ' THEN SIGNAL ATTACKED
IF FCT='3' & MM3~=' ' THEN SIGNAL ATTACKED
IF FCT='4' & MM4~=' ' THEN SIGNAL ATTACKED
IF FCT='5' & MM5~=' ' THEN SIGNAL ATTACKED
IF FCT='6' & MM6~=' ' THEN SIGNAL ATTACKED
IF FCT='7' & MM7~=' ' THEN SIGNAL ATTACKED
IF FCT='8' & MM8~=' ' THEN SIGNAL ATTACKED
IF FCT='9' & MM9~=' ' THEN SIGNAL ATTACKED
MESS1='CHOOSE AN AVAILABLE OPPONENT...'ST.163
SIGNAL ATTACK
MISTACK:
FCT=0
FXT=0
MSTS=TEMPAT*2
IF UPPER(ST.38)=CROSSBOW THEN MSTS=TEMPAT
IF MISNUM=MSTS THEN DO;MISNUM=0;SIGNAL MONTURN;END
IF UPPER(ST.38)=NONE THEN DO;MESS1='YOU HAVE NO MISSILE WEAPON! TRY MOVING CLOSER!'ST.163;SIGNAL COMBAT;END
IF UPPER(ST.76)~=ROCK & UPPER(ST.77)=0 THEN DO;MESS1='YOU SEEM TO BE OUT OF AMMO!'ST.163;SIGNAL COMBAT;END
IF DIS>ST.43 THEN DO;MESS1='YOUR 'UPPER(ST.38) 'DOES NOT HAVE THAT SORT OF RANGE!'ST.163;SIGNAL COMBAT;END
IF ST.76~=ROCK & ST.77=0 THEN DO;MESS1='YOU SEEM TO BE OUT OF AMMO!'ST.163;SIGNAL COMBAT;END
ARCHER=YES
SX 'F0BCBWHICH ENEMY C9#CB WILL YOU ATTACK?C0XXXXXXXXXXXXXXXXXXXXD '
GETCHAR
FXT=UPPER(RESULT)
IF FXT='1' & MM1~=' ' THEN SIGNAL MATTACKED
IF FXT='2' & MM2~=' ' THEN SIGNAL MATTACKED
IF FXT='3' & MM3~=' ' THEN SIGNAL MATTACKED
IF FXT='4' & MM4~=' ' THEN SIGNAL MATTACKED
IF FXT='5' & MM5~=' ' THEN SIGNAL MATTACKED
IF FXT='6' & MM6~=' ' THEN SIGNAL MATTACKED
IF FXT='7' & MM7~=' ' THEN SIGNAL MATTACKED
IF FXT='8' & MM8~=' ' THEN SIGNAL MATTACKED
IF FXT='9' & MM9~=' ' THEN SIGNAL MATTACKED
MESS1='CHOOSE AN AVAILABLE OPPONENT...'ST.163
SIGNAL MISTACK
MATTACKED:
ATTY=NO
MISSY=YES
MISNUM=MISNUM+1
IF ST.76~=ROCK & ST.77=0 THEN DO;MESS1='YOU SEEM TO BE OUT OF AMMO!'ST.163;SIGNAL COMBAT;END
ST.77=ST.77-1
XZX=VRND(1,5)
IF XZX=1 THEN MESS1='YOU ATTACK THE' UPPER(MS.1)
IF XZX=2 THEN MESS1='YOU TAKE CAREFUL AIM AT THE' UPPER(MS.1)
IF XZX=3 THEN MESS1='YOU LIFT YOUR' UPPER(ST.38) 'TO ATTACK POSITION AND BEGIN'
IF XZX=4 THEN MESS1='YOU EYE THE' UPPER(MS.1)' CAREFULLY AND THEN FIRE AT THEM!'
IF XZX=5 THEN MESS1='YOU ALLOW YOUR' UPPER(ST.38) 'TO DO WHAT IT WAS BUILT FOR'
NAL=TEMPMHACO-MS.10
ROLL=VRND(1,20)+1
IF ROLL>NAL THEN SIGNAL MISCONNECT
ZCZ=VRND(1,7)
IF ZCZ=1 THEN MESS2='YOU MISSED THE' UPPER(MS.1)', HOWEVER'ST.163
IF ZCZ=2 THEN MESS2= 'YOUR 'UPPER(ST.76)' GOES WIDE RIGHT OF THE' UPPER(MS.1)''ST.163
IF ZCZ=3 THEN MESS2= 'YOUR 'UPPER(ST.76)' GOES WIDE LEFT'ST.163
IF ZCZ=4 THEN MESS2= 'YOUR ATTACK WITH THE 'UPPER(ST.38)' MISSES THE 'UPPER(MS.1) ''ST.163
IF ZCZ=5 THEN MESS2= 'THE' UPPER(MS.1) 'DUCKS BENEATH YOUR' UPPER(ST.76)''ST.163
IF ZCZ=6 THEN MESS2= 'THE' UPPER(MS.1) 'SOMEHOW DEFLECTS YOUR' UPPER(ST.76)'!'ST.163
IF ZCZ=7 THEN MESS2= 'YOUR' UPPER(ST.76) 'SOMEHOW DEFLECTS OFF THE' UPPER(MS.1)'S' UPPER(MS.11)'!'ST.163
IF MISNUM<TEMPAT THEN DO;MESS4='YOU ARE SKILLED ENOUGH TO ATTACK AGAIN, HOWEVER!'ST.163;END
IF MISNUM=TEMPAT THEN DO;MESS4='UNFORTUNATELY, IT IS NOW YOUR OPPONENT''S TURN'ST.163;END
SIGNAL COMBAT
MISCONNECT:
RD=VRND(1,8)
IF RD=1 THEN MESS2='YOU REALLY PIN-CUSHIONED THE' UPPER(MS.1)''ST.163
IF RD=2 THEN MESS2= 'YOUR' UPPER(ST.76) 'JUST NAILED THE' UPPER(MS.1)''ST.163
IF RD=3 THEN MESS2= 'YOU HIT THE' UPPER(MS.1) 'WITH YOUR' UPPER(ST.76)''ST.163
IF RD=4 THEN MESS2= 'YOU SLICED INTO THE' UPPER(MS.1)''ST.163
IF RD=5 THEN MESS2= 'YOU JUST REALLY TORE INTO THE' UPPER(MS.1)''ST.163
IF RD=6 THEN MESS2= 'YOUR ATTACK NAILED THE' UPPER(MS.1)''ST.163
IF RD=7 THEN MESS2= 'YOU ARE A HECK OF A MARKSMAN WITH A' UPPER(ST.38)'!'ST.163
IF RD=8 THEN MESS2= 'BLOOD FLIES EVERYWHERE FROM YOUR VOLLEY!'ST.163
MISDAMPLUS=TEMPDAMPLUS-4
IF MISDAMPLUS<0 THEN MISDAMPLUS=0
DAM=VRND(ST.41,ST.42)+MISDAMPLUS
MESS3='YOU DID' DAM 'POINTS OF DAMAGE!'
IF FXT=1 THEN DO;ATHP=MM11-DAM;MM11=MM11-DAM;END
IF FXT=2 THEN DO;ATHP=MM12-DAM;MM12=MM12-DAM;END
IF FXT=3 THEN DO;ATHP=MM13-DAM;MM13=MM13-DAM;END
IF FXT=4 THEN DO;ATHP=MM14-DAM;MM14=MM14-DAM;END
IF FXT=5 THEN DO;ATHP=MM15-DAM;MM15=MM15-DAM;END
IF FXT=6 THEN DO;ATHP=MM16-DAM;MM16=MM16-DAM;END
IF FXT=7 THEN DO;ATHP=MM17-DAM;MM17=MM17-DAM;END
IF FXT=8 THEN DO;ATHP=MM18-DAM;MM18=MM18-DAM;END
IF FXT=9 THEN DO;ATHP=MM19-DAM;MM19=MM19-DAM;END
SIGNAL MONDEAD
ATTACKED:
ATTY=YES
MISSY=NO
IF ATNUM=TEMPAT THEN DO;ATNUM=0;SIGNAL MONTURN;END
ATNUM=ATNUM+1
XZX=VRND(1,6)
IF XZX=1 THEN MESS1='YOU ATTACK THE' UPPER(MS.1)
IF XZX=2 THEN MESS1='YOU LUNGE FOR THE' UPPER(MS.1)' WITH FIRE IN YOUR EYES!'
IF XZX=3 THEN MESS1='YOU LIFT YOUR' UPPER(ST.33) 'TO ATTACK POSITION AND BEGIN'
IF XZX=4 THEN MESS1='YOU EYE THE' UPPER(MS.1)' CAREFULLY AND THEN LEAP AT THEM!'
IF XZX=5 THEN MESS1='YOU ALLOW YOUR' UPPER(ST.33) 'TO DO WHAT IT WAS BUILT FOR'
IF XZX=6 THEN MESS1='YOU GATHER YOUR FACULTIES AND LEAP INTO THE FRAY'
NAL=TEMPTHACO-MS.10
ROLL=VRND(1,20)+1
IF ROLL>NAL THEN SIGNAL CONNECT
ZCZ=VRND(1,6)
IF ZCZ=1 THEN MESS2='YOU MISSED THE' UPPER(MS.1)', HOWEVER'ST.163
IF ZCZ=2 THEN MESS2='YOUR ATTACK GOES WIDE RIGHT OF THE' UPPER(MS.1)''ST.163
IF ZCZ=3 THEN MESS2='YOUR ASSAULT GOES WIDE LEFT'ST.163
IF ZCZ=4 THEN MESS2='YOUR ATTACK WITH THE 'ST.33' MISSES THE 'UPPER(MS.1) ''ST.163
IF ZCZ=5 THEN MESS2='THE' UPPER(MS.1) 'DUCKS BENEATH YOUR ATTACK'ST.163
IF ZCZ=6 THEN MESS2='THE' UPPER(MS.1) 'SOMEHOW DEFLECTS YOUR BLOW!'ST.163
IF ZCZ=7 THEN MESS2= 'YOUR' ST.33 'SOMEHOW DEFLECTS OFF THE' MS.1'S' MS.11'!'ST.163
IF ATNUM<TEMPAT THEN DO;MESS4='YOU ARE SKILLED ENOUGH TO ATTACK AGAIN, HOWEVER!'ST.163;END
IF ATNUM=TEMPAT THEN DO;MESS4='UNFORTUNATELY, IT IS NOW YOUR OPPONENT''S TURN'ST.163;END
SIGNAL COMBAT
CONNECT:
BSTB=NO
RD=VRND(1,8)
IF RD=1 THEN MESS2='YOU REALLY POUNDED THE' UPPER(MS.1)''ST.163
IF RD=2 THEN MESS2='YOUR' UPPER(ST.33) 'JUST NAILED THE' UPPER(MS.1)''ST.163
IF RD=3 THEN MESS2='YOU HIT THE' UPPER(MS.1) 'WITH YOUR' UPPER(ST.33)''ST.163
IF RD=4 THEN MESS2='YOU SLICED INTO THE' UPPER(MS.1)''ST.163
IF RD=5 THEN MESS2='YOU JUST REALLY TORE INTO THE' UPPER(MS.1)''ST.163
IF RD=6 THEN MESS2='YOUR ATTACK NAILED THE' UPPER(MS.1)''ST.163
IF RD=7 THEN MESS2='YOU ARE GREAT BATTLING WITH A' UPPER(ST.33)'!'ST.163
IF RD=8 THEN MESS2='BLOOD FLIES EVERYWHERE FROM YOUR ATTACK!'ST.163
DAM=VRND(ST.36,ST.37)+TEMPDAMPLUS
BOTB=VRND(1,20)
IF UPPER(ST.3)=ROGUE & BOTB<ST.4 | UPPER(ST.3)=NINJA & BOTB<ST.4 THEN DO;BSTB=YES;DAM=DAM*ST.57;END
IF FCT=1 THEN DO;ATHP=MM11-DAM;MM11=MM11-DAM;END
IF FCT=2 THEN DO;ATHP=MM12-DAM;MM12=MM12-DAM;END
IF FCT=3 THEN DO;ATHP=MM13-DAM;MM13=MM13-DAM;END
IF FCT=4 THEN DO;ATHP=MM14-DAM;MM14=MM14-DAM;END
IF FCT=5 THEN DO;ATHP=MM15-DAM;MM15=MM15-DAM;END
IF FCT=6 THEN DO;ATHP=MM16-DAM;MM16=MM16-DAM;END
IF FCT=7 THEN DO;ATHP=MM17-DAM;MM17=MM17-DAM;END
IF FCT=8 THEN DO;ATHP=MM18-DAM;MM18=MM18-DAM;END
IF FCT=9 THEN DO;ATHP=MM19-DAM;MM19=MM19-DAM;END
IF BSTB=NO THEN MESS3='YOU DID' DAM 'POINTS OF DAMAGE!'ST.163
IF BSTB=YES THEN DO;BSTB=NO;MESS3='YOU BACKSTABBED!!! DAMAGE WAS' DAM 'POINTS!'ST.163;END
SIGNAL MONDEAD
TURNY:
IF NUM>0 & MM1~=' ' THEN DO;MM1=' ';END
IF NUM>1 & MM2~=' ' THEN DO;MM2=' ';END
IF NUM>2 & MM3~=' ' THEN DO;MM3=' ';END
IF NUM>3 & MM4~=' ' THEN DO;MM4=' ';END
IF NUM>4 & MM5~=' ' THEN DO;MM5=' ';END
IF NUM>5 & MM6~=' ' THEN DO;MM6=' ';END
IF NUM>6 & MM7~=' ' THEN DO;MM7=' ';END
IF NUM>7 & MM8~=' ' THEN DO;MM8=' ';END
IF NUM>8 & MM9~=' ' THEN DO;MM9=' ';END
SIGNAL MONTURN
MONDEAD:
IF MONUM=0 THEN DO;ZED=YES;SIGNAL COMBAT1;END
IF ATHP>0 & ATTY=YES & ATNUM<TEMPAT THEN DO;MESS4='YOU ARE SKILLED ENOUGH TO ATTACK AGAIN!'ST.163;SIGNAL COMBAT;END
IF ATHP>0 & ATTY=YES & ATNUM=TEMPAT THEN DO;MESS4='UNFORTUNATELY, IT IS NOW YOUR OPPONENT''S TURN'ST.163;SIGNAL COMBAT;END
IF ATHP>0 & MISSY=YES & MISNUM<MSTS THEN DO;MESS4='YOU ARE SKILLED ENOUGH TO ATTACK AGAIN!'ST.163;SIGNAL COMBAT;END
IF ATHP>0 & MISSY=YES & MISNUM=MSTS THEN DO;MESS4='UNFORTUNATELY, IT IS NOW YOUR OPPONENT''S TURN'ST.163;SIGNAL COMBAT;END
MONUM=MONUM-1
MESS4=''MS.21 ''ST.163
EXP=MS.16
XPAP=EXP/ST.168
PARSE VAR XPAP SEEXP"."REMDS
EEXP=EEXP+SEEXP
EXP=0
IF FCT=1 THEN MM1=' '
IF FCT=2 THEN MM2=' '
IF FCT=3 THEN MM3=' '
IF FCT=4 THEN MM4=' '
IF FCT=5 THEN MM5=' '
IF FCT=6 THEN MM6=' '
IF FCT=7 THEN MM7=' '
IF FCT=8 THEN MM8=' '
IF FCT=9 THEN MM9=' '
IF FXT=1 THEN MM1=' '
IF FXT=2 THEN MM2=' '
IF FXT=3 THEN MM3=' '
IF FXT=4 THEN MM4=' '
IF FXT=5 THEN MM5=' '
IF FXT=6 THEN MM6=' '
IF FXT=7 THEN MM7=' '
IF FXT=8 THEN MM8=' '
IF FXT=9 THEN MM9=' '
IF MONUM=0 THEN DO;ZED=YES;SIGNAL COMBAT1;END
SIGNAL COMBAT
BATTLEOVER:
UPMORE=YES
ZED=NO
ST.5=ST.5+EEXP
IF ST.5>=ST.6 THEN DO;EEXP=0;SIGNAL LEVELGAIN;END
EEXP=0
UPMORE=NO
SIGNAL SHUFFLE
BOOTY:
FOUGHT=FLAG
IF ZED=YES & ST.127=ON THEN DO;SFI SPATH||'VICTORY';TT 'W2';END
TT 'F1'
SFI SPATH||'CHEST'
LEV=ST.4
TTYPE=0
GTYPE=0
WTYPE=0
ATYPE=0
ITYPE=0
IF MS.17=1 THEN TTYPE=5*LEV*MCASH
IF MS.17=2 THEN TTYPE=8*LEV*MCASH
IF MS.17=3 THEN TTYPE=10*LEV*MCASH
IF MS.17=4 THEN TTYPE=20*LEV*MCASH
IF MS.17=5 THEN TTYPE=50*LEV*MCASH
IF MS.17>=6 THEN TTYPE=100*LEV*MCASH
IF MS.17=7 THEN GTYPE=VRND(1,4)
IF MS.17=8 THEN GTYPE=VRND(2,6)
IF MS.17>=9 THEN GTYPE=VRND(4,10)
IF MS.17=10 THEN ATYPE=VRND(1,4)
IF MS.17>=11 THEN ATYPE=VRND(2,6)
IF MS.17=12 THEN ITYPE=VRND(2,4)
IF MS.17=13 THEN ITYPE=VRND(19,24)
IF MS.17>=14 THEN ITYPE=VRND(13,17)
IF MS.17=15 THEN WTYPE=VRND(1,6)
IF MS.17=16 THEN WTYPE=VRND(5,7)
IF MS.17=17 THEN WTYPE=8
IF MS.17=18 THEN WTYPE=9
IF MS.17=19 THEN WTYPE=10
IF MS.17=20 THEN WTYPE=11
IF MS.17=21 THEN WTYPE=12
IF MS.17=22 THEN WTYPE=13
IF MS.17=23 THEN WTYPE=14
IF MS.17=24 THEN WTYPE=15
IF MS.17=25 THEN WTYPE=16
IF ST.162>0 THEN TTYPE=0
ST.170=ST.170+TTYPE
IF GTYPE~=0 THEN ST.154=ST.154+GTYPE
IF ATYPE~=0 THEN ST.155=ST.155+ATYPE
IF ITYPE~=0 THEN DO;CALL OPEN(1,IPATH||'MITEM','R');DO I=1 TO 24;MTM.I=READLN(1);END;CALL CLOSE(1);CALL OPEN(1,IPATH||MTM.ITYPE,'R');DO I=1 TO 10;IST.I=READLN(1);END;CALL CLOSE(1);END
IF WTYPE~=0 THEN DO;CALL OPEN(1,WPATH||'MWEP','R');DO I=1 TO 20;WEP.I=READLN(1);END;CALL CLOSE(1);CALL OPEN(1,WPATH||WEP.WTYPE,'R');DO I=1 TO 9;MW.I=READLN(1);END;CALL CLOSE(1);END
TT 'N2CAYOU FIND THE FOLLOWING:'
IF EEXP~=0 THEN TT 'CAEXPERIENCE POINTS:CF' EEXP
IF TTYPE~=0 THEN TT 'N1CB'TTYPE 'CFPIECES OF CBGOLD'
IF GTYPE~=0 THEN TT 'CF'GTYPE 'CEGEMS'
IF ATYPE~=0 THEN TT 'CF'ATYPE 'CFPIECES OFC9 JEWELRY'
IF ITYPE~=0 THEN TT 'CFAND ACD' IST.1
IF WTYPE~=0 THEN TT 'CFAND ACC' MW.1
TT 'G1'
IF ITYPE~=0 THEN SIGNAL MITEMPICKUP
IF WTYPE~=0 THEN SIGNAL WEPICK
IF FUNDS=YES | FUNDZ=YES THEN SIGNAL SHUFFLE
SIGNAL BATTLEOVER
WEPICK:
IF ST.3=MONK THEN DO;TT 'N1CEMONKS ARE ONLY ALLOWED TO USE THEIR HANDS AS WEAPONS!W2';SIGNAL SHUFFLE;END
IF ST.3=WIZARD & MW.9=MISSILE THEN SIGNAL SORRYGUY
IF ST.3=WIZARDPRIEST & MW.9=MISSILE THEN SIGNAL SORRYGUY
IF ST.3=WIZARDPRIEST & MW.9=BLADE THEN SIGNAL SORRYGUY
IF ST.3=WITCH & MW.9=MISSILE THEN SIGNAL SORRYGUY
IF ST.3=WITCHPRIESTESS & MW.9=MISSILE THEN SIGNAL SORRYGUY
IF ST.3=WITCHPRIESTESS & MW.9=BLADE THEN SIGNAL SORRYGUY
IF ST.3=PRIESTESS & MW.9=MISSILE THEN SIGNAL SORRYGUY
IF ST.3=PRIESTESS & MW.9=BLADE THEN SIGNAL SORRYGUY
IF ST.3=PRIEST & MW.9=MISSILE THEN SIGNAL SORRYGUY
IF ST.3=PRIEST & MW.9=BLADE THEN SIGNAL SORRYGUY
IF ST.3=NINJA & MW.9=POLE THEN SIGNAL SORRYGUY
IF ST.3=ROGUE & MW.9=POLE THEN SIGNAL SORRYGUY
SX 'CADO YOU WISH TO REPLACE YOUR CURRENT WEAPON WITH THE NEW ONE? '
GETCHAR
YN=UPPER(RESULT)
IF YN=p THEN SIGNAL QUIT
IF YN='N' & ZED=YES THEN SIGNAL BATTLEOVER
IF YN='Y' & MW.9~=MISSILE THEN DO;OLDWEP=ST.33;ST.33=MW.1;ST.36=MW.2;ST.37=MW.3;ST.34=MW.6;ST.35=MW.7;WTYPE=0;PCKPU=YES;END
IF YN='Y' & MW.9=MISSILE THEN DO;OLDWEP=ST.38;ST.38=MW.1;ST.41=MW.2;ST.42=MW.3;ST.39=MW.6;ST.40=MW.7;ST.43=MW.4;WTYPE=0;PCKPU=YES;END
IF PCKPU=YES & MAP>0 THEN DO;LUUK.LOC=OLDWEP;PICKPU=NO;SIGNAL SVLUK;END
IF ZED=YES THEN SIGNAL BATTLEOVER
IF FUNDS=YES | FUNDZ=YES THEN SIGNAL SHUFFLE
SIGNAL BATTLEOVER
MITEMPICKUP:
IF UPPER(MTM.ITYPE)=UPPER(ITEM.1) THEN DO;AMOUNT.1=AMOUNT.1+1;SIGNAL KIXBAK;END
IF UPPER(MTM.ITYPE)=UPPER(ITEM.2) THEN DO;AMOUNT.2=AMOUNT.2+1;SIGNAL KIXBAK;END
IF UPPER(MTM.ITYPE)=UPPER(ITEM.3) THEN DO;AMOUNT.3=AMOUNT.3+1;SIGNAL KIXBAK;END
IF UPPER(MTM.ITYPE)=UPPER(ITEM.4) THEN DO;AMOUNT.4=AMOUNT.4+1;SIGNAL KIXBAK;END
IF UPPER(MTM.ITYPE)=UPPER(ITEM.5) THEN DO;AMOUNT.5=AMOUNT.5+1;SIGNAL KIXBAK;END
IF UPPER(MTM.ITYPE)=UPPER(ITEM.6) THEN DO;AMOUNT.6=AMOUNT.6+1;SIGNAL KIXBAK;END
IF UPPER(MTM.ITYPE)=UPPER(ITEM.7) THEN DO;AMOUNT.7=AMOUNT.7+1;SIGNAL KIXBAK;END
IF UPPER(MTM.ITYPE)=UPPER(ITEM.8) THEN DO;AMOUNT.8=AMOUNT.8+1;SIGNAL KIXBAK;END
IF UPPER(MTM.ITYPE)=UPPER(ITEM.9) THEN DO;AMOUNT.9=AMOUNT.9+1;SIGNAL KIXBAK;END
IF UPPER(MTM.ITYPE)=UPPER(ITEM.10) THEN DO;AMOUNT.10=AMOUNT.10+1;SIGNAL KIXBAK;END
IF ITEM.10~=' ' THEN DO;TT 'CAYOUR BACKBACK IS FULL!!W1';SIGNAL KIXBAK;END
IF ITEM.1=' ' THEN DO;ITEM.1=MTM.ITYPE;WEIGHT.1=IST.2;AMOUNT.1=1;VALUE.1=IST.3;SIGNAL KIXBAK;END
IF ITEM.2=' ' THEN DO;ITEM.2=MTM.ITYPE;WEIGHT.2=IST.2;AMOUNT.2=1;VALUE.2=IST.3;SIGNAL KIXBAK;END
IF ITEM.3=' ' THEN DO;ITEM.3=MTM.ITYPE;WEIGHT.3=IST.2;AMOUNT.3=1;VALUE.3=IST.3;SIGNAL KIXBAK;END
IF ITEM.4=' ' THEN DO;ITEM.4=MTM.ITYPE;WEIGHT.4=IST.2;AMOUNT.4=1;VALUE.4=IST.3;SIGNAL KIXBAK;END
IF ITEM.5=' ' THEN DO;ITEM.5=MTM.ITYPE;WEIGHT.5=IST.2;AMOUNT.5=1;VALUE.5=IST.3;SIGNAL KIXBAK;END
IF ITEM.6=' ' THEN DO;ITEM.6=MTM.ITYPE;WEIGHT.6=IST.2;AMOUNT.6=1;VALUE.6=IST.3;SIGNAL KIXBAK;END
IF ITEM.7=' ' THEN DO;ITEM.7=MTM.ITYPE;WEIGHT.7=IST.2;AMOUNT.7=1;VALUE.7=IST.3;SIGNAL KIXBAK;END
IF ITEM.8=' ' THEN DO;ITEM.8=MTM.ITYPE;WEIGHT.8=IST.2;AMOUNT.8=1;VALUE.8=IST.3;SIGNAL KIXBAK;END
IF ITEM.9=' ' THEN DO;ITEM.9=MTM.ITYPE;WEIGHT.9=IST.2;AMOUNT.9=1;VALUE.9=IST.3;SIGNAL KIXBAK;END
IF ITEM.10=' ' THEN DO;ITEM.10=MTM.ITYPE;WEIGHT.10=IST.2;AMOUNT.10=1;VALUE.10=IST.3;SIGNAL KIXBAK;END
SIGNAL KIXBAK
KIXBAK:
IF WTYPE~=0 THEN SIGNAL WEPICK
IF ZED=YES THEN SIGNAL BATTLEOVER
IF FUNDS=YES | FUNDZ=YES THEN SIGNAL SHUFFLE
SIGNAL BATTLEOVER
LEVELGAIN:
ST.4=ST.4+1
TT 'N3CBCONGRATULATIONS,' ST.1 '! YOU ARE NOW LEVEL' ST.4'W2'
PLAY=YES
IF ST.6<600000 THEN ST.6=ST.6*2
IF ST.6>600000 THEN ST.6=ST.6+300000
IF ST.3=NINJA THEN SIGNAL ROGUESKILLS
IF ST.3=PRIEST THEN SIGNAL PRIESTSKILLS
IF ST.3=WARRIOR THEN SIGNAL WARRIORSKILLS
IF ST.3=WIZARD THEN SIGNAL MAGICSKILLS
IF ST.3=MONK THEN SIGNAL MONKSKILLS
IF ST.3=ANTI KNIGHT THEN SIGNAL WARRIORSKILLS
IF ST.3=KNIGHT THEN SIGNAL WARRIORSKILLS
IF ST.3=GUIDE THEN SIGNAL WARRIORSKILLS
IF ST.3=ROGUE THEN SIGNAL ROGUESKILLS
IF ST.3=WARRIORROGUE THEN SIGNAL ROGUESKILLS
IF ST.3=WARRIORWIZARD THEN SIGNAL MAGICSKILLS
IF ST.3=WARRIORWIZARDROGUE THEN SIGNAL MAGICSKILLS
IF ST.3=WARRIORPRIEST THEN SIGNAL PRIESTSKILLS
IF ST.3=WIZARDROGUE THEN SIGNAL MAGICSKILLS
IF ST.3=WIZARDPRIEST THEN SIGNAL PRIESTSKILLS
IF ST.3=AMAZONIAN THEN SIGNAL WARRIORSKILLS
IF ST.3=PRIESTESS THEN SIGNAL PRIESTSKILLS
IF ST.3=AMAZONIANWITCH THEN SIGNAL MAGICSKILLS
IF ST.3=AMAZONIANWITCHROGUE THEN SIGNAL MAGICSKILLS
IF ST.3=AMAZONIAN PRIESTESS THEN SIGNAL PRIESTSKILLS
IF ST.3=AMAZONIANROGUE THEN SIGNAL ROGUESKILLS
IF ST.3=WITCHPRIESTESS THEN SIGNAL PRIESTSKILLS
IF ST.3=WITCHROGUE THEN SIGNAL MAGICSKILLS
IF ST.3=WITCH THEN SIGNAL MAGICSKILLS
MONMISS:
IF MONGO=MS.4 THEN DO;MONGO=0;MOVP=TEMPMOVE;ATNUM=0;SIGNAL COMBAT;END
IF MONGO=MONUM THEN DO;MONGO=0;MOVP=TEMPMOVE;ATNUM=0;SIGNAL COMBAT;END
MONGO=MONGO+1
SXP=MS.4
IF SXP>MONUM THEN SXP=MONUM
IF SXP>1 & MONGO=1 THEN MESS1=''SXP' 'UPPER(MS.1)'S START LAUNCHING ARROWS AT YOU!'ST.163
IF MONGO>2 THEN MESS1='YET ANOTHER' UPPER(MS.1) 'BEGINS FIRING!'
IF MONGO=2 THEN MESS1='A SECOND' UPPER(MS.1) 'FIRES AN ARROW AT YOU!'
IF MONGO=1 THEN MESS1='THE' UPPER(MS.1) 'FIRES AT YOU!'
MNAL=MS.15-TEMPAC
MROLL=VRND(1,20)+1
IF MROLL>MNAL THEN SIGNAL MONCONNECT
MESS2='...BUT MISSES HIS ATTACK!'ST.163
SIGNAL MONTURN
MONTURN:
IF MISSY=YES & MISNUM=MSTS THEN DO;MISNUM=0;MISSY=NO;SIGNAL MONTURN;END
IF ATTY=YES & ATNUM=TEMPAT THEN DO;ATNUM=0;ATTY=NO;SIGNAL MONTURN;END
COND=ST.50
IF SPLD=YES THEN SIGNAL COMBATPREP
NME='BC'LEFT(ST.1' ',20)''
RACE='BC'ST.2''
CLASS='BC'ST.3''
LEVEL='BC'ST.4''
CLRC1='BC'XXXXXXXXXX''
CNDE='BC'COND''
CLRC2='BC'XXXXX''
HELTH='BC'ST.26''
ATX='BC'TEMPAT''
THAC='BC'TEMPTHACO''
MHAC='BC'TEMPMHACO''
XP='BC'LEFT(EEXP' ',6)''
AC='BC'TEMPAC''
DAW='BC'ST.36' TO 'ST.37'+'TEMPDAMPLUS''
DWM='BC'ST.41' TO 'ST.42'+'MISDAMPLUS''
CLRC3='BC'XXXXX''
MVD='BC'MOVP''
CLRC4='BC'XXXX''
AMMO='BC'ST.77''
CLRC5='BC'XXXX''
DIST='BC'DIS''
MPR1='BC'MM1''
MPR2='BC'MM2''
MPR3='BC'MM3''
MPR4='BC'MM4''
MPR5='BC'MM5''
MPR6='BC'MM6''
MPR7='BC'MM7''
MPR8='BC'MM8''
MPR9='BC'MM9''
MXS1='BC'MESS1''
MXS2='BC'MESS2''
MXS3='BC'MESS3''
MXS4='BC'MESS4''
TT 'F0'NME
TT 'F0'RACE
TT 'F0'CLASS
TT 'F0'LEVEL
TT 'F0'CLRC1
TT 'F0'CLRC2
TT 'F0'CLRC3
TT 'F0'CLRC4
TT 'F0'CLRC5
TT 'F0'CNDE
TT 'F0'MPR1
TT 'F0'MPR2
TT 'F0'MPR3
TT 'F0'MPR4
TT 'F0'MPR5
TT 'F0'MPR6
TT 'F0'MPR7
TT 'F0'MPR8
TT 'F0'MPR9
TT 'F0'HELTH
TT 'F0'ATX
TT 'F0'THAC
TT 'F0'MHAC
TT 'F0'XP
TT 'F0'AC
TT 'F0'DAW
TT 'F0'DWM
TT 'F0'MVD
TT 'F0'AMMO
TT 'F0'DIST
TT 'F0'CLEAR1
TT 'F0'CLEAR2
TT 'F0'CLEAR3
TT 'F0'CLEAR4
TT 'F0'MXS1
TT 'F0'MXS2
TT 'F0'MXS3
TT 'F0'MXS4
IF MONUM>0 THEN DO;MESS1=CLEARA;MESS2=CLEARA;MESS3=CLEARA;MESS4=CLEARA;END
IF MONUM<1 THEN SIGNAL BOOTY
IF MONGO=MS.4 THEN DO;MONGO=0;MOVP=TEMPMOVE;ATNUM=0;SIGNAL COMBAT;END
IF MONGO=MONUM THEN DO;MONGO=0;MOVP=TEMPMOVE;ATNUM=0;SIGNAL COMBAT;END
MONGO=MONGO+1
SXP=MS.4
IF MM1=HEX & XM1~=DID THEN DO;MESS1='THE FIRST' UPPER(MS.1) 'WOULD ATTACK BUT IS' HEX' 'ST.163;XM1=DID;SIGNAL MONTURN;END
IF MM2=HEX & XM2~=DID THEN DO;MESS1='THE SECOND' UPPER(MS.1) 'WOULD ATTACK BUT IS' HEX' 'ST.163;XM2=DID;SIGNAL MONTURN;END
IF MM3=HEX & XM3~=DID THEN DO;MESS1='THE THIRD' UPPER(MS.1) 'WOULD ATTACK BUT IS' HEX' 'ST.163;XM3=DID;SIGNAL MONTURN;END
IF MM4=HEX & XM4~=DID THEN DO;MESS1='THE FOURTH' UPPER(MS.1) 'WOULD ATTACK BUT IS' HEX' 'ST.163;XM4=DID;SIGNAL MONTURN;END
IF MM5=HEX & XM5~=DID THEN DO;MESS1='THE FIFTH' UPPER(MS.1) 'WOULD ATTACK BUT IS' HEX' 'ST.163;XM5=DID;SIGNAL MONTURN;END
IF MM6=HEX & XM6~=DID THEN DO;MESS1='THE SIXTH' UPPER(MS.1) 'WOULD ATTACK BUT IS' HEX' 'ST.163;XM6=DID;SIGNAL MONTURN;END
IF MM7=HEX & XM7~=DID THEN DO;MESS1='THE SEVENTH' UPPER(MS.1) 'WOULD ATTACK BUT IS' HEX' 'ST.163;XM7=DID;SIGNAL MONTURN;END
IF MM8=HEX & XM8~=DID THEN DO;MESS1='THE EIGHTH' UPPER(MS.1) 'WOULD ATTACK BUT IS' HEX' 'ST.163;XM8=DID;SIGNAL MONTURN;END
IF MM9=HEX & XM9~=DID THEN DO;MESS1='THE NINTH' UPPER(MS.1) 'WOULD ATTACK BUT IS' HEX' 'ST.163;XM9=DID;SIGNAL MONTURN;END
IF DIS>10 & MS.11=BOW THEN SIGNAL MONMISS
IF DIS>10 & MONUM>1 THEN DO;MESS1='THE' UPPER(MS.1)'S CHARGE TOWARDS YOU'ST.163;DIS=DIS-MS.23;END
IF DIS>10 & MONUM=1 THEN DO;MESS1='THE' UPPER(MS.1)' CHARGES TOWARDS YOU'ST.163;DIS=DIS-MS.23;END
IF DIS>10 THEN DO;MONGO=0;MOVP=TEMPMOVE;SIGNAL COMBAT;END
IF DIS<10 THEN DIS=10
IF SXP>MONUM THEN SXP=MONUM
IF SXP>1 & MONGO=1 THEN MESS1=''SXP' 'UPPER(MS.1)'S TRY TO SURROUND YOU!'ST.163
IF MONGO>2 THEN MESS1='YET ANOTHER' UPPER(MS.1) 'COMES AFTER YOU!'
IF MONGO=2 THEN MESS1='A SECOND' UPPER(MS.1) 'BARES DOWN ON YOU!'
IF MONGO=1 THEN MESS1='THE' UPPER(MS.1) 'LUNGES AT YOU!'
USE=VRND(1,100)
IF USE<MS.19 & MS.18~=NONE THEN SIGNAL MONSPECIAL
MNAL=MS.15-TEMPAC
MROLL=VRND(1,20)+1
IF MROLL>MNAL THEN SIGNAL MONCONNECT
IF MROLL=21 THEN SIGNAL MONCONNECT
MESS2='...BUT MISSES HIS ATTACK!'ST.163
SIGNAL MONTURN
MONCONNECT:
MDXM=VRND(MS.13,MS.14)
MSTXT=VRND(1,4)
IF MSTXT=1 THEN MESS2='...AND NAILED YOU FOR' MDXM 'POINTS OF DAMAGE!'ST.163
IF MSTXT=2 THEN MESS2='...AND HITS YOU WITH THEIR' MS.12 'FOR' MDXM 'POINTS OF DAMAGE!'ST.163
IF MSTXT=3 THEN MESS2='...AND 'MS.5 'YOU FOR' MDXM 'POINTS OF DAMAGE!'ST.163
IF MSTXT=4 THEN MESS2='...AND 'MS.5 'YOU FOR' MDXM 'POINTS OF DAMAGE WITH THEIR' MS.12'!'ST.163
ST.26=ST.26-MDXM
IF ST.26<1 THEN SIGNAL YOUDEAD
IF MS.18~=NONE & HELD<1 THEN SIGNAL MONSPECIAL
SIGNAL MONTURN
MONSPECIAL:
IF UPPER(MS.18)=CHARM THEN SIGNAL HOLDIT
IF UPPER(MS.18)=GAZE THEN SIGNAL HOLDIT
IF UPPER(MS.18)=PARALYZATION THEN SIGNAL HOLDIT
IF UPPER(MS.18)=DRAIN THEN SIGNAL DRAINED
IF UPPER(MS.18)=POISON THEN SIGNAL POISONED
SVXD=VRND(1,20)+1
IF SVXD>PHYSAVE THEN HALF=YES
SIGNAL DAMAGE
POISONED:
SVXD=VRND(1,20)+1
IF SVXD>PHYSAVE THEN DO;MESS2='THE' UPPER(MS.1) 'TRIED TO POISON YOU BUT FAILED!'ST.163;SIGNAL MONTURN;END
ST.50=POISONED
SIGNAL MONTURN
DRAINED:
SVXD=VRND(1,20)+1
IF SVXD>MAGSAVE THEN DO;MESS2='THE' UPPER(MS.1) 'TRIED TO DRAIN YOU OF LEVELS BUT FAILED!';SIGNAL MONTURN;END
MESS2='YIKES! THE' UPPER(MS.1) 'DRAINED YOU!! YOU HAVE JUST LOST A LEVEL'ST.163
ST.4=ST.4-1
LEXP=ST.5/2
ST.5=ST.5-LEXP
HPT=VRND(ST.28,ST.29)+ST.22
ST.26=ST.26-HPT
ST.27=ST.27-HPT
SIGNAL MONTURN
DAMAGE:
DAM=VRND(1,5)
DAM1=VRND(1,5)
DAM2=DAM+DAM1
DAM3=DAM2/2
DAM4=DAM3*ST.4
IF HALF=YES THEN DAM5=DAM4/2
PARSE VAR DAM4 DAMX'.'REMD
IF HALF=YES THEN DO;PARSE VAR DAM5 DAMX'.'REMD;HALF=NO;END
IF UPPER(MS.18)~=BREATH THEN MESS2='THE' UPPER(MS.1) 'HITS YOU WITH A' MS.18 'DOING' DAMX 'IN DAMAGE!'ST.163
IF UPPER(MS.18)=BREATH THEN MESS2='THE' UPPER(MS.1) 'HITS YOU WITH ITS' MS.18 'WEAPON' DAMX 'IN DAMAGE!'ST.163
IF UPPER(MS.18)~=BREATH & HALF=YES THEN MESS3='BUT THAT WAS JUST HALF DAMAGE THANKS TO YOUR PHYSICAL ENDURANCE!'ST.163
IF UPPER(MS.18)=BREATH & HALF=YES THEN MESS3='BUT THAT WAS JUST HALF DAMAGE THANKS TO YOUR PHYSICAL ENDURANCE!'ST.163
ST.26=ST.26-DAMX
SIGNAL MONTURN
HOLDIT:
SVXD=VRND(1,20)+1
IF SVXD>MAGSAVE & UPPER(MS.18)=PARALYZATION THEN DO;MESS2='THE' UPPER(MS.1) 'TRIED TO PARALYZE YOU BUT FAILED!'ST.163;SIGNAL MONTURN;END
IF SVXD>MAGSAVE & UPPER(MS.18)=CHARM THEN DO;MESS2='THE' UPPER(MS.1) 'TRIED TO CHARM YOU BUT FAILED!'ST.163;SIGNAL MONTURN;END
IF SVXD>MAGSAVE & UPPER(MS.18)=GAZE THEN DO;MESS2='THE' UPPER(MS.1) 'TRIED TO HYPNOTIZE YOU WITH HIS EYES BUT FAILED!'ST.163;SIGNAL MONTURN;END
HELD=VRND(4,10)-ST.4
IF HELD<1 THEN HELD=2
IF UPPER(MS.18)=PARALYZATION THEN COND=PARALYZED
IF UPPER(MS.18)=CHAMR THEN COND=CHARMED
IF UPPER(MS.18)=GAZE THEN COND=HYPNOTIZED
MESS2='YOU HAVE BEEN 'COND'!'ST.163
SIGNAL MONTURN
YOUDEAD:
IF POISONED~=YES THEN TT 'F1N3C9N3THAT LAST BLOW KILLED YOU...SORRY DUDE!'ST.163
IF POISONED=YES THEN TT 'F1N3C9ALL OF THAT POISON IN YOUR SYSTEM WAS TOO MUCH!'ST.163
ST.50=OKAY
ST.26=0
SFI SPATH||'DEAD'
TT 'W2'
SIGNAL QUIT1
NOTEBOOK:
TT 'F1'
SFI MPATH||'NOTEBOOK'
SX 'N1CA>>'
GETCHAR
NTB=RESULT
IF NTB=p THEN SIGNAL QUIT
IF NTB='Q' THEN DO;MAIN=YES;SIGNAL SHUFFLE;END
IF NTB='R' THEN SIGNAL READIT
IF NTB='W' THEN SIGNAL WRITEIT
SIGNAL NOTEBOOK
READIT:
IF EXISTS(NOTPATH||NAME)THEN SIGNAL READOK
TT 'F1CAYOU HAVE TO PUT AN ENTRY IN YOUR NOTEBOOK IN ORDER TO READ IT.W2'
SIGNAL NOTEBOOK
READOK:
TT 'F1N3CAREADING THE NOTEBOOK OFCF' ST.1'N2'
CALL OPEN(1,NOTPATH||NAME,'R')
DO UNTIL EOF(1)=1
ENTRY=READLN(1)
IF ENTRY~='' THEN DO;TT 'N1CB'ENTRY;END
END
CALL CLOSE(1)
TT 'N2C9HIT A KEY WHEN YOU WISH TO GO ON...G1'
SIGNAL NOTEBOOK
WRITEIT:
QUERY 'F1N1CAYOU MAY ONLY ENTER A SINGLE LINE OF TEXT AT ONE TIME INTO YOURN1NOTEBOOK. HOWEVER, YOU CAN DO THIS AS OFTEN AS YOU WISH.N2CB>>CF '
ENTRY=RESULT
IF ENTRY=p THEN SIGNAL QUIT
IF ENTRY=' ' THEN SIGNAL NOTEBOOK
EL='W'
IF EXISTS(NOTPATH||NAME)=1 THEN EL='A'
CALL OPEN(1,NOTPATH||NAME,EL)
CALL WRITELN(1,ENTRY)
CALL CLOSE(1)
SIGNAL NOTEBOOK
VIEWCHAR:
MPD=ST.9-3
IF MPD<0 THEN MPD=0
THIT=ST.44-ST.8
MHIT=ST.45-ST.17
CALL OPEN(1,SPATH||ST.128,'R')
DO I=1 TO 23
PIC.I=READLN(1)
END
CALL CLOSE(1)
IF ST.76=0 THEN ST.76=NIL
IF ST.127=OFF THEN DO;DO I=1 TO 22;PIC.I=' ';END;TT 'F1';END
TT ''PIC.21 'CESAVE VS. MAGIC:CD' LEFT(ST.49' ',3)' CESAVE VS. OTHER:CD' ST.47'CF'
TT ''PIC.22' C1HIT ANY KEY TO CONTINUE...G1F1'
IF ST.3=WARRIOR THEN SIGNAL BACKPACK
STUFF:
ST1=0
ST2=0
ST3=0
ST4=0
ST5=0
ST6=0
ST7=0
ST8=0
IF ST.98=RELIGIOUS THEN DO;ST1=ST.81;ST2=ST.82;ST3=ST.83;ST4=ST.84;ST5=ST.85;ST6=ST.86;ST7=ST.87;ST8=ST.88;END
IF ST.98=MAGIC THEN DO;ST1=ST.99;ST2=ST.100;ST3=ST.101;ST4=ST.102;ST5=ST.103;ST6=ST.104;ST7=ST.105;ST8=ST.106;END
IF ST.98=BOTH THEN DO;ST1=ST.81'/'ST.99;ST2=ST.82'/'ST.100;ST3=ST.83'/'ST.101;ST4=ST.84'/'ST.102;ST5=ST.85'/'ST.103;ST6=ST.86'/'ST.104;ST7=ST.87'/'ST.105;ST8=ST.88'/'ST.106;END
TT 'N1C9BACKPACK CF/CA ITEM AMOUNT FIRST ITEM CHARGES'
IF ITEM.1~=' ' THEN DO;TT 'CF'LEFT(ITEM.1' ',28) 'CB 'LEFT(AMOUNT.1' ',15) 'CB 'LEFT(WEIGHT.1' ',4);END
IF ITEM.2~=' ' THEN DO;TT 'CF'LEFT(ITEM.2' ',28) 'CB 'LEFT(AMOUNT.2' ',15) 'CB 'LEFT(WEIGHT.2' ',4);END
IF ITEM.3~=' ' THEN DO;TT 'CF'LEFT(ITEM.3' ',28) 'CB 'LEFT(AMOUNT.3' ',15) 'CB 'LEFT(WEIGHT.3' ',4);END
IF ITEM.4~=' ' THEN DO;TT 'CF'LEFT(ITEM.4' ',28) 'CB 'LEFT(AMOUNT.4' ',15) 'CB 'LEFT(WEIGHT.4' ',4);END
IF ITEM.5~=' ' THEN DO;TT 'CF'LEFT(ITEM.5' ',28) 'CB 'LEFT(AMOUNT.5' ',15) 'CB 'LEFT(WEIGHT.5' ',4);END
IF ITEM.6~=' ' THEN DO;TT 'CF'LEFT(ITEM.6' ',28) 'CB 'LEFT(AMOUNT.6' ',15) 'CB 'LEFT(WEIGHT.6' ',4);END
IF ITEM.7~=' ' THEN DO;TT 'CF'LEFT(ITEM.7' ',28) 'CB 'LEFT(AMOUNT.7' ',15) 'CB 'LEFT(WEIGHT.7' ',4);END
IF ITEM.8~=' ' THEN DO;TT 'CF'LEFT(ITEM.8' ',28) 'CB 'LEFT(AMOUNT.8' ',15) 'CB 'LEFT(WEIGHT.8' ',4);END
IF ITEM.9~=' ' THEN DO;TT 'CF'LEFT(ITEM.9' ',28) 'CB 'LEFT(AMOUNT.9' ',15) 'CB 'LEFT(WEIGHT.9' ',4);END
IF ITEM.10~=' ' THEN DO;TT 'CF'LEFT(ITEM.10' ',28) 'CB 'LEFT(AMOUNT.10' ',15) 'CB 'LEFT(WEIGHT.10' ',4);END
TT 'N1C1 HIT ANY KEY TO GO ON...G1F1'
SIGNAL SHUFFLE
SELECTAPIC:
TT 'F1N3CASINCE IT WOULD BE NEARLY IMPOSSIBLE TO CREATE A DEFAULT C9PICTURE'
TT 'CAFOR THE HUNDREDS OF COMBINATIONS WHICH MAY EXIST AS FAR AS YOUR'
TT 'CHARACTER RACE, CLASS AND ALIGNMENT C9YOUCA MAY NOW CHOOSE ONE.'
TT 'N1C9YOU ARE A -->CF' ST.70' 'ST.2' 'ST.3
TT 'N1CAHERE ARE THE PICTURE TYPES:'
TT 'N1CB1. CFWIZARDS'
TT 'CB2. CFPRIESTS'
TT 'CB3. CFWARRIORS'
TT 'CB4. CFROGUES'
TT 'CB5. CFFEMALES'
TT 'N1CAOTHER CLASSES EITHER ALLOW ONLY ONE RACE OR HAVE DEFAULT PICTURES.'
SX 'N1CEWHICH SHALL IT BE?C9 [RETURN = QUIT]CF '
GETCHAR
PICS=UPPER(RESULT)
IF PICS=p THEN SIGNAL QUIT
IF PICS='1' THEN SIGNAL WIXP
IF PICS='2' THEN SIGNAL PIXP
IF PICS='3' THEN SIGNAL WARP
IF PICS='4' THEN SIGNAL ROXP
IF PICS='5' THEN SIGNAL FIXP
IF PICS='Q' THEN DO;MAIN=YES;SIGNAL MAIN;END
SIGNAL SELECTAPIC
WIXP:
WXP=NO
TT 'F1N1CAHERE IS A LIST OF THE AVAILABLE WIZARD PICTURES.'
TT 'SELECT THE C9# CAOF THE PICTURE YOU WISH TO VIEW'
TT 'OR C9P CAFOLLOWED BY THE NUMBER YOU WISH TO PICK AS'
TT 'YOUR CHARACTER PICTURE.'
TT 'N1CB1. CFHUMAN WIZARD'
TT 'CB2. CFWHITE ELF WIZARD'
TT 'CB3. CFBLOND ELF WIZARD'
TT 'CB4. CFLITHE ELF WIZARD'
QUERY 'N1CEWHICH FILE WILL YOU VIEW OR PICK?C9 [RETURN = QUIT] '
YYY=UPPER(RESULT)
IF YYY=p THEN SIGNAL QUIT
IF YYY='Q' THEN SIGNAL SELECTAPIC
IF YYY='' THEN SIGNAL SELECTAPIC
IF YYY='1' THEN DO;WXP=YES;YYY=HUMWIZARD;SIGNAL PICSEE;END
IF YYY='2' THEN DO;WXP=YES;YYY=WHITEWIZARD;SIGNAL PICSEE;END
IF YYY='3' THEN DO;WXP=YES;YYY=BLONDWIZARD;SIGNAL PICSEE;END
IF YYY='4' THEN DO;WXP=YES;YYY=LITHEWIZARD;SIGNAL PICSEE;END
IF YYY='P1' THEN DO;ST.128=HUMWIZARD;MAIN=YES;SIGNAL MAIN;END
IF YYY='P2' THEN DO;ST.128=WHITEWIZARD;MAIN=YES;SIGNAL MAIN;END
IF YYY='P3' THEN DO;ST.128=BLONDWIZARD;MAIN=YES;SIGNAL MAIN;END
IF YYY='P4' THEN DO;ST.128=LITHEWIZARD;MAIN=YES;SIGNAL MAIN;END
TT 'N1CAMAKE SURE YOU PLACE THE LETTER C9VCA ORC9 PCA BEFORE THE NUMBER YOU CHOOSE!W2'
SIGNAL WIXP
FIXP:
FXP=NO
TT 'F1N1CAHERE IS A LIST OF THE AVAILABLE FEMALE PICTURES.'
TT 'CABECAUSE PLAYERS ARE GENERALLY MALE ONLY A FEW PICTURES ARE'
TT 'AVAILABLE. THIS WAS NOT DONE AS AN ANTI-FEMINIST MANEUVER.'
TT 'IN FACT, THIS MIGHT BE THE ONLY CNET RPG THAT INCLUDES GENDER!'
TT 'SELECT THE C9# CAOF THE PICTURE YOU WISH TO VIEW'
TT 'OR C9P CAFOLLOWED BY THE NUMBER YOU WISH TO PICK AS'
TT 'YOUR CHARACTER PICTURE.'
TT 'N1CB1. CFBLOND PRIESTESS'
TT 'CB2. CFBRUNETTE PRIESTESS'
TT 'CB3. CFRED HEADED WITCH'
TT 'CB4. CFBLOND WITCH'
TT 'CB5. CFRED HEADED AMAZONIAN'
TT 'CB6. CFBLACK HAIRED AMAZONIAN'
TT 'CB7. CFRED HEADED ROGUE'
TT 'CB8. CFBLOND ROGUE'
QUERY 'N1CEWHICH FILE WILL YOU VIEW OR PICK?C9 [RETURN = QUIT] '
YYY=UPPER(RESULT)
IF YYY=p THEN SIGNAL QUIT
IF YYY='Q' THEN SIGNAL SELECTAPIC
IF YYY='' THEN SIGNAL SELECTAPIC
IF YYY='1' THEN DO;FXP=YES;YYY=FEMBLONDPRIEST;SIGNAL PICSEE;END
IF YYY='2' THEN DO;FXP=YES;YYY=FEMBLACKPRIEST;SIGNAL PICSEE;END
IF YYY='3' THEN DO;FXP=YES;YYY=FEMREDWIZARD;SIGNAL PICSEE;END
IF YYY='4' THEN DO;FXP=YES;YYY=FEMBLONDWIZARD;SIGNAL PICSEE;END
IF YYY='5' THEN DO;FXP=YES;YYY=FEMREDWARRIOR;SIGNAL PICSEE;END
IF YYY='6' THEN DO;FXP=YES;YYY=FEMBLACKWARRIOR;SIGNAL PICSEE;END
IF YYY='7' THEN DO;FXP=YES;YYY=FEMREDROGUE;SIGNAL PICSEE;END
IF YYY='8' THEN DO;FXP=YES;YYY=FEMBLONDROGUE;SIGNAL PICSEE;END
IF YYY='P1' THEN DO;ST.128=FEMBLONDPRIEST;MAIN=YES;SIGNAL MAIN;END
IF YYY='P2' THEN DO;ST.128=FEMBLACKPRIEST;MAIN=YES;SIGNAL MAIN;END
IF YYY='P3' THEN DO;ST.128=FEMREDWIZARD;MAIN=YES;SIGNAL MAIN;END
IF YYY='P4' THEN DO;ST.128=FEMBLONDWIZARD;MAIN=YES;SIGNAL MAIN;END
IF YYY='P5' THEN DO;ST.128=FEMREDWARRIOR;MAIN=YES;SIGNAL MAIN;END
IF YYY='P6' THEN DO;ST.128=FEMBLACKWARRIOR;MAIN=YES;SIGNAL MAIN;END
IF YYY='P7' THEN DO;ST.128=FEMREDROGUE;MAIN=YES;SIGNAL MAIN;END
IF YYY='P8' THEN DO;ST.128=FEMBLONDROGUE;MAIN=YES;SIGNAL MAIN;END
TT 'N1CAMAKE SURE YOU PLACE THE LETTER C9VCA ORC9 PCA BEFORE THE NUMBER YOU CHOOSE!W2'
SIGNAL FIXP
PIXP:
PRP=NO
TT 'F1N1CAHERE IS A LIST OF THE AVAILABLE PRIEST PICTURES.'
TT 'SELECT THE C9# CAOF THE PICTURE YOU WISH TO VIEW'
TT 'OR C9P CAFOLLOWED BY THE NUMBER YOU WISH TO PICK AS'
TT 'YOUR CHARACTER PICTURE.'
TT 'N1CB1. CFHUMAN MONK'
TT 'CB2. CFHUMAN & GNOME PRIEST'
TT 'CB3. CFBLOND & LITHE ELF PRIEST'
TT 'CB4. CFWHITE ELF PRIEST'
TT 'CB5. CFOGRE PRIEST'
TT 'CB6. CFDWARF PRIEST'
QUERY 'N1CEWHICH FILE WILL YOU VIEW OR PICK?C9 [RETURN = QUIT] '
YYY=UPPER(RESULT)
IF YYY=p THEN SIGNAL QUIT
IF YYY='Q' THEN SIGNAL SELECTAPIC
IF YYY='' THEN SIGNAL SELECTAPIC
IF YYY='1' THEN DO;PRP=YES;YYY=MONK;SIGNAL PICSEE;END
IF YYY='2' THEN DO;PRP=YES;YYY=HUMPRIEST;SIGNAL PICSEE;END
IF YYY='3' THEN DO;PRP=YES;YYY=BLONDPRIEST;SIGNAL PICSEE;END
IF YYY='4' THEN DO;PRP=YES;YYY=WHITEPRIEST;SIGNAL PICSEE;END
IF YYY='5' THEN DO;PRP=YES;YYY=OGREPRIEST;SIGNAL PICSEE;END
IF YYY='6' THEN DO;PRP=YES;YYY=DWARFPRIEST;SIGNAL PICSEE;END
IF YYY='P1' THEN DO;ST.128=MONK;MAIN=YES;SIGNAL MAIN;END
IF YYY='P2' THEN DO;ST.128=HUMANPRIEST;MAIN=YES;SIGNAL MAIN;END
IF YYY='P3' THEN DO;ST.128=BLONDPRIEST;MAIN=YES;SIGNAL MAIN;END
IF YYY='P4' THEN DO;ST.128=WHITEPRIEST;MAIN=YES;SIGNAL MAIN;END
IF YYY='P5' THEN DO;ST.128=OGREPRIEST;MAIN=YES;SIGNAL MAIN;END
IF YYY='P6' THEN DO;ST.128=DWARFPRIEST;MAIN=YES;SIGNAL MAIN;END
TT 'N1CAMAKE SURE YOU PLACE THE LETTER C9VCA ORC9 PCA BEFORE THE NUMBER YOU CHOOSE!W2'
SIGNAL PIXP
WARP:
WAP=NO
TT 'F1N1CAHERE IS A LIST OF THE AVAILABLE FIGHTER PICTURES.'
TT 'SELECT THE C9# CAOF THE PICTURE YOU WISH TO VIEW'
TT 'OR C9P CAFOLLOWED BY THE NUMBER YOU WISH TO PICK AS'
TT 'YOUR CHARACTER PICTURE.'
TT 'N1CB1. CFHUMAN GUIDE'
TT 'CB2. CFHUMAN ANTI KNIGHT'
TT 'CB3. CFHUMAN KNIGHT & WARRIOR'
TT 'CB4. CFHUMAN IMMORAL WARRIOR'
TT 'CB5. CFOGRE WARRIOR'
TT 'CB6. CFDWARF WARRIOR'
TT 'CB7. CFGNOME OR HALFLING WARRIOR'
TT 'CB8. CFWHITE ELF WARRIOR'
TT 'CB9. CFLITHE & BLOND WARRIOR'
QUERY 'N1CEWHICH FILE WILL YOU VIEW OR PICK?C9 [RETURN = QUIT] '
YYY=UPPER(RESULT)
IF YYY=p THEN SIGNAL QUIT
IF YYY='Q' THEN SIGNAL SELECTAPIC
IF YYY='' THEN SIGNAL SELECTAPIC
IF YYY='1' THEN DO;WAP=YES;YYY=GUIDE;SIGNAL PICSEE;END
IF YYY='2' THEN DO;WAP=YES;YYY=ANTIPAL;SIGNAL PICSEE;END
IF YYY='3' THEN DO;WAP=YES;YYY=HUMWARRIOR;SIGNAL PICSEE;END
IF YYY='4' THEN DO;WAP=YES;YYY=HUMWARRIORE;SIGNAL PICSEE;END
IF YYY='5' THEN DO;WAP=YES;YYY=OGREWARRIOR;SIGNAL PICSEE;END
IF YYY='6' THEN DO;WAP=YES;YYY=DDWARRIORE;SIGNAL PICSEE;END
IF YYY='7' THEN DO;WAP=YES;YYY=HALFDEMISTOUTWARRIOR; SIGNAL PICSEE;END
IF YYY='8' THEN DO;WAP=YES;YYY=WHITEWARRIOR; SIGNAL PICSEE;END
IF YYY='9' THEN DO;WAP=YES;YYY=ELFWARRIOR; SIGNAL PICSEE;END
IF YYY='P1' THEN DO;ST.128=GUIDE;MAIN=YES;SIGNAL MAIN;END
IF YYY='P2' THEN DO;ST.128=ANTIPAL;MAIN=YES;SIGNAL MAIN;END
IF YYY='P3' THEN DO;ST.128=HUMWARRIOR;MAIN=YES;SIGNAL MAIN;END
IF YYY='P4' THEN DO;ST.128=HUMWARRIORE;MAIN=YES;SIGNAL MAIN;END
IF YYY='P5' THEN DO;ST.128=OGREWARRIOR;MAIN=YES;SIGNAL MAIN;END
IF YYY='P6' THEN DO;ST.128=DDWARRIORE;MAIN=YES;SIGNAL MAIN;END
IF YYY='P7' THEN DO;ST.128=HALFDEMISTOUTWARRIOR;MAIN=YES;SIGNAL MAIN;END
IF YYY='P8' THEN DO;ST.128=WHITEWARRIOR;MAIN=YES;SIGNAL MAIN;END
IF YYY='P9' THEN DO;ST.128=ELFWARRIOR;MAIN=YES;SIGNAL MAIN;END
TT 'N1CAMAKE SURE YOU PLACE THE LETTER C9VCA ORC9 PCA BEFORE THE NUMBER YOU CHOOSE!W2'
SIGNAL WARP
ROXP:
ROP=NO
TT 'F1N1CAHERE IS A LIST OF THE AVAILABLE PRIEST PICTURES.'
TT 'SELECT THE C9# CAOF THE PICTURE YOU WISH TO VIEW'
TT 'OR C9P CAFOLLOWED BY THE NUMBER YOU WISH TO PICK AS'
TT 'YOUR CHARACTER PICTURE.'
TT 'N1CB1. CFNINJA'
TT 'CB2. CFHALFLING & GNOME ROGUE'
TT 'CB3. CFBLOND ELF ROGUE'
TT 'CB4. CFOGRE ROGUE'
TT 'CB5. CFDWARF NINJA'
TT 'CB6. CFDWARF ROGUE'
QUERY 'N1CEWHICH FILE WILL YOU VIEW OR PICK?C9 [RETURN = QUIT] '
YYY=UPPER(RESULT)
IF YYY=p THEN SIGNAL QUIT
IF YYY='Q' THEN SIGNAL SELECTAPIC
IF YYY='' THEN SIGNAL SELECTAPIC
IF YYY='1' THEN DO;ROP=YES;YYY=NINJA;SIGNAL PICSEE;END
IF YYY='2' THEN DO;ROP=YES;YYY=HALFDEMISTOUTROGUE;SIGNAL PICSEE;END
IF YYY='3' THEN DO;ROP=YES;YYY=BLONDROGUE;SIGNAL PICSEE;END
IF YYY='4' THEN DO;ROP=YES;YYY=OGRETHIEF;SIGNAL PICSEE;END
IF YYY='5' THEN DO;ROP=YES;YYY=DWARFNINJA;SIGNAL PICSEE;END
IF YYY='6' THEN DO;ROP=YES;YYY=DWARFROGUE;SIGNAL PICSEE;END
IF YYY='P1' THEN DO;ST.128=NINJA;MAIN=YES;SIGNAL MAIN;END
IF YYY='P2' THEN DO;ST.128=HALFDEMIHALFLINGROGUE;MAIN=YES;SIGNAL MAIN;END
IF YYY='P3' THEN DO;ST.128=BLONDROGUE;MAIN=YES;SIGNAL MAIN;END
IF YYY='P4' THEN DO;ST.128=OGRETHIEF;MAIN=YES;SIGNAL MAIN;END
IF YYY='P5' THEN DO;ST.128=DWARFNINJA;MAIN=YES;SIGNAL MAIN;END
IF YYY='P6' THEN DO;ST.128=DWARFROGUE;MAIN=YES;SIGNAL MAIN;END
TT 'N1CAMAKE SURE YOU PLACE THE LETTER C9VCA ORC9 PCA BEFORE THE NUMBER YOU CHOOSE!W2'
SIGNAL ROXP
PICSEE:
CALL OPEN(1,SPATH||YYY,'R')
DO I=1 TO 23
PIC1.I=READLN(1)
END
CALL CLOSE(1)
TT 'A'PIC1.1
TT ''PIC1.2
TT ''PIC1.3
TT ''PIC1.4
TT ''PIC1.5
TT ''PIC1.6
TT ''PIC1.7
TT ''PIC1.8
TT ''PIC1.9
TT ''PIC1.10
TT ''PIC1.11
TT ''PIC1.12
TT ''PIC1.13
TT ''PIC1.14
TT ''PIC1.15
TT ''PIC1.16
TT ''PIC1.17
TT ''PIC1.18
TT ''PIC1.19
TT ''PIC1.20
TT ''PIC1.21
TT ''PIC1.22 ' CAHIT A KEY TO MOVE ALONG...G1F1'
IF WXP=YES THEN SIGNAL WIXP
IF WAP=YES THEN SIGNAL WARP
IF ROP=YES THEN SIGNAL ROXP
IF PRP=YES THEN SIGNAL PIXP
IF FXP=YES THEN SIGNAL FIXP
LOADSAVED:
TT 'F1N1CALOADING YOUR CHARACTER AND POSITION...'
CALL OPEN(1,UPATH||NAME,'R')
DO I=1 TO 170
ST.I=READLN(1)
END
CALL CLOSE(1)
IF ST.150=NO THEN DO;ST.150=NDAY;ST.164=1;END
IF ST.73=0 | ST.72=0 | ST.71=0 THEN DO;TT 'N3C9WARNING:N2CBSOMETHING HAS HAPPENED TO YOU! YOU EITHER DROPPED CARRIER DURINGN1CHARACTER CREATION OR DID NOT COMPLETE GENERATION!N1YOUR CHARACTER IS UNREADABLE TO ME SO I MUST START YOU OVER!G1';SIGNAL CUTUP;END
ST.164=ST.164+1
IF ST.164>MAXTURN & ST.150=DAYN THEN DO;TT 'F1N1CBYOU CAN ONLY PLAY EARTH LORDS C9'MAXTURN 'CBTIMES A DAY!W2';EXIT;END
IF ST.150~=DAYN THEN ST.164=1
CALL OPEN(1,BAKPATH||NAME,'R')
DO I=1 TO 10
ITEM.I=READLN(1)
AMOUNT.I=READLN(1)
WEIGHT.I=READLN(1)
VALUE.I=READLN(1)
END
CALL CLOSE(1)
IF EXISTS(BPATH||NAME) THEN DO;CALL OPEN(1,BPATH||NAME,'R');DO I=1 TO 45;SPNAME.I=READLN(1);SPTOTAL.I=READLN(1);SPAMOUNT.I=READLN(1);END;CALL CLOSE(1);END
IF ST.26<1 THEN SIGNAL YIKES
SIGNAL SHUFFLE
YIKES:
TT 'F1'
SFI SPATH||'GODDO'
TT 'G1'
ST.26=1
SIGNAL SHUFFLE
STATBONUS:
IF ST.7<8 THEN DO;ST.8=-2;ST.9=-3;ST.10=1;ST.11=50;END
IF ST.7>7 & ST.7<11 THEN DO;ST.8=-1;ST.9=-2;ST.10=2;ST.11=55;END
IF ST.7>10 & ST.7<15 THEN DO;ST.8=0;ST.9=0;ST.10=3;ST.11=60;END
IF ST.7=15 THEN DO;ST.9=+1;ST.10=5;ST.11=70;END
IF ST.7=16 THEN DO;ST.8=+1;ST.9=+2;ST.10=6;ST.11=80;END
IF ST.7=17 THEN DO;ST.8=+2;ST.9=+3;ST.10=8;ST.11=90;END
IF ST.7=18 THEN DO;ST.8=+2;ST.9=+5;ST.10=10;ST.11=110;END
IF ST.7=19 THEN DO;ST.8=+3;ST.9=+7;ST.10=12;ST.11=130;END
IF ST.7=20 THEN DO;ST.8=+3;ST.9=+9;ST.10=14;ST.11=150;END
IF ST.12<15 THEN DO;ST.13=0;END
IF ST.12=15 THEN DO;ST.13=1;END
IF ST.12=16 THEN DO;ST.13=2;END
IF ST.12=17 THEN DO;ST.13=2;END
IF ST.12=18 THEN DO;ST.13=3;END
IF ST.12=19 THEN DO;ST.13=3;END
IF ST.12=20 THEN DO;ST.13=4;END
IF ST.14<8 THEN DO;ST.15=-2;ST.16=4;ST.17=-2;ST.51=-5;ST.53=-5;ST.55=-10;END
IF ST.14>7 & ST.14<11 THEN DO;ST.15=-1;ST.16=5;ST.17=-1;END
IF ST.14>10 & ST.14<16 THEN DO;ST.15=0;ST.16=6;ST.17=0;END
IF ST.14=16 THEN DO;ST.15=1;ST.16=7;ST.17=1;ST.51=0;ST.53=5;ST.55=0;END
IF ST.14=17 THEN DO;ST.15=2;ST.16=8;ST.17=2;ST.51=5;ST.53=5;ST.55=5;END
IF ST.14=18 THEN DO;ST.15=3;ST.16=9;ST.17=3;ST.51=5;ST.53=10;ST.55=5;ST.58=5;END
IF ST.14=19 THEN DO;ST.15=4;ST.16=10;ST.17=4;ST.51=10;ST.53=10;ST.55=10;ST.58=5;END
IF ST.14=20 THEN DO;ST.15=5;ST.16=11;ST.17=5;ST.51=15;ST.53=15;ST.55=10;ST.58=10;END
IF ST.18<8 THEN DO;ST.18=-2;ST.20=-1;END
IF ST.18>7 & ST.18<11 THEN DO;ST.19=-1;ST.20=0;END
IF ST.18>10 & ST.18<16 THEN DO;ST.19=0;ST.20=0;END
IF ST.18=16 THEN DO;ST.19=1;ST.20=1;END
IF ST.18=17 THEN DO;ST.19=2;ST.20=1;END
IF ST.18=18 THEN DO;ST.19=3;ST.20=2;END
IF ST.18=19 THEN DO;ST.19=4;ST.20=2;END
IF ST.18=20 THEN DO;ST.19=5;ST.20=3;END
IF ST.18<8 THEN DO;ST.18=-2;ST.20=-1;END
IF ST.21>7 & ST.21<11 THEN DO;ST.22=-1;ST.23=-1;END
IF ST.21>10 & ST.21<15 THEN DO;ST.22=0;ST.23=0;END
IF ST.21=15 THEN DO;ST.22=1;ST.23=0;END
IF ST.21=16 THEN DO;ST.22=2;ST.23=1;END
IF ST.21=17 THEN DO;ST.22=3;ST.23=1;END
IF ST.21=18 THEN DO;ST.22=4;ST.23=2;END
IF ST.21=19 THEN DO;ST.22=5;ST.23=2;END
IF ST.21=20 THEN DO;ST.22=6;ST.23=3;END
IF ST.24<15 THEN DO;ST.25=150;END
IF ST.24=15 THEN DO;ST.25=250;END
IF ST.24=16 THEN DO;ST.25=300;END
IF ST.24=17 THEN DO;ST.25=450;END
IF ST.24=18 THEN DO;ST.25=700;END
IF ST.24=19 THEN DO;ST.25=1000;END
IF ST.24=20 THEN DO;ST.25=2000;END
ST.30=10
ST.31=SKIN
ST.32=ST.30-ST.15
ST.33=FIST
ST.34=NONE
ST.35=NONE
ST.36=1
ST.37=4
ST.38=NONE
ST.39=NONE
ST.40=NONE
ST.41=0
ST.42=0
ST.43=0
ST.170=VRND(50,200)+150
IF ST.2=DWARF THEN ST.73=VRND(1,12)+48
IF ST.2=DWARF THEN ST.74=VRND(10,40)+110
IF ST.2=DWARF THEN ST.75=BLACK
IF ST.2=BLOND ELF THEN ST.73=VRND(1,12)+60
IF ST.2=BLOND ELF THEN ST.74=VRND(10,40)+110
IF ST.2=BLOND ELF THEN ST.75=BLONDE
IF ST.2=GNOME THEN ST.73=VRND(1,12)+48
IF ST.2=GNOME THEN ST.74=VRND(10,40)+100
IF ST.2=GNOME THEN ST.75=BROWN
IF ST.2=OGRE THEN ST.73=VRND(1,12)+72
IF ST.2=OGRE THEN ST.74=VRND(30,70)+160
IF ST.2=OGRE THEN ST.75=WHITE
IF ST.2=LITHE ELF THEN ST.73=VRND(1,12)+54
IF ST.2=LITHE ELF THEN ST.74=VRND(10,40)+80
IF ST.2=LITHE ELF THEN ST.75=WHITE
IF ST.2=HUMAN THEN ST.73=VRND(1,10)+70
IF ST.2=HUMAN THEN ST.74=VRND(20,90)+130
IF ST.2=HUMAN THEN ST.75=VRND(1,3)
IF ST.2=WHITE ELF THEN ST.73=VRND(1,12)+48
IF ST.2=WHITE ELF THEN ST.74=VRND(10,40)+65
IF ST.2=WHITE ELF THEN ST.75=GREY
IF ST.2=HALFLING THEN ST.73=VRND(1,12)+36
IF ST.2=HALFLING THEN ST.74=VRND(10,40)+100
IF ST.2=DWARF THEN ST.75=BROWN
IF ST.75=1 THEN ST.75=BLONDE
IF ST.75=2 THEN ST.75=BLACK
IF ST.75=3 THEN ST.75=BROWN
SIGNAL CLASS
BANNED:
TT 'N1CASORRY, BUT ACF' ST.2 'CACANNOT BE THAT CLASS...W2'
SIGNAL CLASS1
REROLL:
TT 'F1'
SFI DPATH||'REROLL'
ST.26=1
DO;MAIN=YES;SIGNAL MAIN;END
SAVESTATS:
ST.150=NDAY
CALL OPEN(1,UPATH||NAME,'W')
DO I=1 TO 170
CALL WRITELN(1,ST.I)
END
CALL CLOSE(1)
CALL OPEN(1,BAKPATH||NAME,'W')
DO I=1 TO 10
CALL WRITELN(1,ITEM.I)
CALL WRITELN(1,AMOUNT.I)
CALL WRITELN(1,WEIGHT.I)
CALL WRITELN(1,VALUE.I)
END
CALL CLOSE(1)
IF START=YES THEN SIGNAL SHUFFLE
IF DOODLE=YES THEN DO;DOODLE=NO;SIGNAL XMOVE;END
ERROR:
SYNTAX:
CALL CLOSE(1)
CALL CLOSE(2)
CALL CLOSE(3)
TT 'CBTHERE WAS AN ERROR FOUND AT LINE 'SIGL' IN CEEARTH LORDSCB'
TT 'CA'SOURCELINE(SIGL)
ERR1='LINE' SIGL
ERR2=''SOURCELINE(SIGL)
LOCO='MAP'MAP 'X'X 'Y' 'LOC' LOC
EL='W'
IF EXISTS(ERRORPATH||'ERRORLOG')=1 THEN EL='A'
CALL OPEN(1,ERRORPATH||'ERRORLOG',EL)
CALL WRITELN(1,ERR1)
CALL WRITELN(1,ERR2)
CALL WRITELN(1,LOCO)
CALL CLOSE(1)
EXIT
QUIT1:
ST.162=0
IF BZZ~=MAIN THEN SX 'ACEDO YOU WANT ME TO SAVE YOUR STATS & LOCATION? '
IF BZZ=MAIN THEN SX 'F0BCEDO YOU WANT ME TO SAVE YOUR STATS & LOCATION? '
GETCHAR
SAVE=UPPER(RESULT)
IF SAVE=p THEN SIGNAL QUIT
IF SAVE='Y' THEN SIGNAL QUIT
IF SAVE='N' THEN DO;TT 'F1';EXIT;END
SIGNAL QUIT1
QUIT:
TT 'F1N4CELET ME SAVE THOSE STATS AND LOCATION FOR YA...'
ST.150=NDAY
CALL OPEN(1,UPATH||NAME,'W')
DO I=1 TO 170
CALL WRITELN(1,ST.I)
END
CALL CLOSE(1)
CALL OPEN(1,BAKPATH||NAME,'W')
DO I=1 TO 10
CALL WRITELN(1,ITEM.I)
CALL WRITELN(1,AMOUNT.I)
CALL WRITELN(1,WEIGHT.I)
CALL WRITELN(1,VALUE.I)
END
CALL CLOSE(1)
IF EXISTS(BPATH||NAME) THEN DO;CALL OPEN(1,BPATH||NAME,'W');DO I=1 TO 45;CALL WRITELN(1,SPNAME.I);CALL WRITELN(1,SPTOTAL.I);CALL WRITELN(1,SPAMOUNT.I);END;CALL CLOSE(1);END
TT 'C9DONE!'
EXIT
CUTUP:
ADDRESS COMMAND 'DELETE "'UPATH''NAME'"'
CALL OPEN(2,UPATH||'LORDS','R')
XX=1
DO UNTIL EOF(2)=1
LEADER.XX=READLN(2)
PLAYER.XX=READLN(2)
IF LEADER.XX=' ' THEN ITERATE
XX=XX+1
END
CALL CLOSE(2)
XX=XX-1
CALL OPEN(2,UPATH||'LORDS','W')
DO I=1 TO XX
IF EXISTS(UPATH||PLAYER.I)=0 THEN ITERATE I
CALL WRITELN(2,LEADER.I)
CALL WRITELN(2,PLAYER.I)
END
CALL CLOSE(2)
SIGNAL BEGIN
VRND: PROCEDURE /* VERY RANDOM V1.1 [C] 1990 SHANE D. KILLIAN */
ARG LO,HI /* FEEL FREE TO USE THIS AS LONG AS THESE */
N1 = TIME('E') /* COMMENTS REMAIN INTACT. WORKS LIKE RANDOM(). */